# Sipper 2.0.0 Released

**URL:** <https://www.ruby-forum.com/t/sipper-2-0-0-released/170922>\
**Category:** Ruby\
**Created:** [June 24, 2009, 4:49am UTC](https://www.ruby-forum.com/t/sipper-2-0-0-released/170922 "2009-06-24T04:49:24Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [June 24, 2009, 4:49am UTC](https://www.ruby-forum.com/t/sipper-2-0-0-released/170922/1 "2009-06-24T04:49:24Z")

</div>

Project : [http://http](http://http)://rubyforge.org/frs/?group\_id=7001

Homepage : [http://sipper.agnity.com](http://sipper.agnity.com)

June 23, 2009

# Overview

The downloads are available from Rubyforge Sipper project website for  
2.0.

The downlaods are in the form of platform specific gems for RH Linux,  
Windows and Solaris.

This is so because there is a native library that is not bundled as a  
native extension to leverage

multi-core, multi-cpu boxes that are so prevalent in telecom labs.

If your platform is not listed above then you can check out the source  
from SVN and build SipperMedia binary under /media/ and copy the  
binary to /bin. Then build the gem using “gem build sipper.gemspec” or  
rake task

# Installation

The installation is just a gem installation. “gem install  
SipperXXXX.gem” where the gem file is your platform gem file.

If you are using an older version of SIPr you can safely uninstall  
older version using “gem uninstall Sipper” and also remove any Sipper  
installation from windows using \programFiles\Sipper\uninstall.exe

Please refer to the latest Sipper book from  
[http://sipper.agnity.com/http://sipper.agnity.com/documents.php](http://sipper.agnity.com/http://sipper.agnity.com/documents.php)

# Changes since last release

1. Feature to pause and resume the load on Linux is added. CTRL^z is  
the key used to pause and resume the load.[June 23 2009]

2. The default log directory for non project executables like ssmoke  
etc has been shifted to a temporary file

3. If Session is attached to a transport, IP and Port (created using  
the right Session type and IP and Port provided e.g  
create\_udp\_session(ip, port)) then it (the transport/ip/port tuple) is  
used for all purposes and never changed unless user changes IP and  
Port from the controller. If the session is detached (e.g  
create\_session() or create\_udp\_session()) then the destination is  
ascertained by normal SIP rules taking into account SIP URI, pre  
existing routes, Route headers etc and is also changed/modified as a  
result of SIP signaling like remote target update during the call  
establishment or subsequent to call establishment. [June 12 2009]

4. Changes done to simplify SIPr installation. Now SIPr is just one  
gem install. [June 9 2009] Note the details below.

5. For new projects after the gem install it works out of the box  
 **.For old projects (backwards compatibility), just copy the new  
Rakefile in the project directory root and everything should work  
fine. (To get the new Rakefile, just create a blank new project and  
copy the Rakefile).**

 **-**  

**For running from the source directly. (Developers only), assuming  
no Sipper gem installed on that machine, just Rubyforge SVN checked  
out and also no sipper in windows ProgramFiles. .You shall need the  
SIPPER\_HOME env var and point to the root of your SVN check out (one  
dir above “sipper” or “sipper\_test”) .Also need to copy the  
commands in your ruby/bin or /usr/local/bin for sgen, srun, sproj and  
ssmoke. Take the example for sgen as reference "ruby  
$SIPPER\_HOME/bin/sgen “$@” .Both old and new projects should work  
without any change with source installation.**

 
  **- Fix for –n 1 in bulk. In new scheme if rate was 1, with RunLoad  
option, controller was not running. [May 24 2009]**

 **- Modified SDP class. Added the ability to add media attributes other  
than “a”. So far using add\_media\_attribute\_at() function always added  
a=xxx parameter. Now for all media attribute functions add/remove/get  
media\_attribute(s)\_at functions we have an optional third argument  
that takes the type of attribute, one of :m, :i, :c, :b, :k, :a. The  
default is :a. So in order to add a “b” attribute on the first media  
line (index 0) you would do - sdp.add\_media\_attribute\_at(0,  
“AS:12600”, :b) [May 24 2009]**

 **- Bug fix for #22249. Recording name now rolls over while bulk  
testing [May 24 2009]**

 **- Fix for bug #23943. Added the bin dir in the gemspec. Also  
included /usr/local/bin in the search path for media (for backwards  
compatibility). [May 11 2009]**

 **- If protocol compliance is set to lax then early media can even be  
established with non reliable provisional response. Of course only  
answer will work here, offer cannot be made with non-reliable  
provisional response anyway. [May 11 2009]**

 **- emit\_console is also made a controller directive now. So you can  
set “emit\_console true” in the controller and ALL messages will be  
printed. This is useful for UAS case when setting on session could be  
done only when first message was received and so it was not printed.  
[May 11 2009]**

 **- Simplified load testing without any modification to the test or  
controller. In order to run the test in bulk mode, all you need is a  
new configuration option :RunLoad set to true, or alternatively have a  
–l (minus lowercase L) flag passed on to srun. You can optionally pass  
–b or –n option to srun in  
addition to –l as before to override the number of calls or call rate,  
otherwise the defaults are picked from configuration from :NumCalls  
and :CallRate [April 13 2009]**

 **- Fixed WaitForSignaling effect as the test was not exiting. [Mar 22  
2009]**

 **- SIPr media API rehash to have simplified APIs for all media  
access. Also included the past work for voice activity detection. [Mar  
17 2009]**

 **- Added ability to exit from srun (from within the controller code)  
using SIP::Locator[:Sipper].sipper\_exit will also need to require  
‘util/locator’ in controller. This is in addition to -rf or run  
for option from srun commandline. [Mar 17 2009]**

 **- Added the ability to print messages as the test progresss. Using  
session.emit\_console = true for a particular session. [Mar 17 2009]**

 **- Added the ability to alter the SDP body (session-lines,  
owner-version, media-lines and media-attributes)after creating the  
offer or answer.[Mar 17 2009]**

 **- Feature #24328. The ACK to non failure response is now delivered  
to controller, such that it can clean up and perhaps more importantly  
finish the test in some cases. [Mar 15 2009]**

 **- Fix for bug #24327, not sending cnonce when no qop in challenge,  
also the ability to not send qop in the challenge. [Mar 12 2009]**

 **- Fix for bug #24439, ProxyController::create\_proxy\_request doesn’t  
handle Record-Route correctly. [Mar 12 2009]**

 **- Network Asserted Identity implemented as per RFC 3325. [Jan 05 2009]**

 **- Support for integrated webserver provided. Now the same controller  
can also act like Webserver and handle HTTP and SIP requests. The  
association of SIP and HTTP Sessions is automatic and seamless. A  
pattern similar to SIP handling has been used to have same look and  
feel in controllers. [Dec 24 2008]**

 **- Digest Server authentication added in SIPr. Earlier we just had  
Digest client support. Now users can also challenge a request from a  
UAS. Two levels of API added one purely directive based and other  
gives complete control over challenge creation and response matching.  
[Dec 21 2008]**

 **- PIDF generator implemented as per RFC 3863 and example test case  
as per RFC 3856 added.**

 
 

**pidfdata = XmlDoc::PidfTuple.new(“open”, “sip:removed\_email\_address@domain.invalid”,  
“0.2”, “Welcome to SIPr World !!”)**

 

**r.content = session.create\_pidf\_doc(“sip:removed\_email\_address@domain.invalid”,pidfdata,  
“Registration done !!”).to\_s**

 

**[Dec 19 2008]**

 
**1. SIP Registration Event - API to generate reginfo doc and example  
test case as per RFC 3680.**

 

**r.content= session.create\_reginfo\_doc(‘sip:removed\_email\_address@domain.invalid’,0).to\_s**

 

**[Dec 18 2008]**

 
**1. Private header extensions implemented as per RFC 3455 [Dec 11 2008]**

**2. Privacy mechanism implemented as per RFC 3323, 3325 & 4244. One  
can apply the complete privacy service by calling a simple API called  
“apply\_privacy()” in SIPr b2bua\_controller.**

 

**request = apply\_privacy(request)**

 

**[Dec 11 2008]**

 
**1. Sipper Load balancer - a SIP UDP load balancer to scale up the  
Sipper load, implemented as external process [Dec 10 2008]**

**2. Included support for TCP transport according to RFC 3261 [Dec 03  
2008]**

**3. Improved interface for verify\_call\_flow(), the direction is now  
optional [Dec 03 2008]**

 

**[released as patch - 1.1.3.2 Sipper-1.1.3.2.gem Nov 11]**

 
**1. Handling of new headers for PUBLISH method and example test case  
as per RFC-3903. [Nov 13 2008]**

**2. Fix to speed up the recvfrom\_nonblock read from UDP socket on  
Windows platform. [Nov 11 2008]**

**3. Service-Route Header implemented as Address Type header. Example  
test case as per RFC-3608 added. [Nov 11 2008]**

**4. Helper methods for Replaces header creation and finding session  
based on Replaces Header value. Rejection of improper Request with  
replaces header as per RFC-3891 in strict mode. To create a replaces  
header for a session and find the session from the replaces header.**

 

**request.replaces = session1.create\_replaces\_header**

 

**session1 = session2.find\_session\_from\_replaces**

 

**[Nov 10 2008]**

 
**1. Session recorder file name fix to read the files in order of  
creation in platform independent way.[Nov 9 2008]**

**2. Support for PATH Header (RFC-3327) [Nov 9 2008]**

**3. Support for Media keepalive to keep NAT binding open for media  
channel when SDP negotiated to Inactive or RecvOnly state. [Nov 7  
2008]**

**4. NAT discovery and traversal code based on config and/or controller  
directive or session config, helper method for REGISTER [Nov 7 2008]**

**5. Enhanced HTTP API to support - Basic authentication, PUT request,  
addition of custom header, arbitrary body [Nov 3 2008]**

 

**[released as patch - 1.1.3.1 Sipper-1.1.3.gem Oct 21]**

 
**1. Fix to add an empty header (without value) to a SIP message [Oct 21  
2008]**

---

<div class="post-metadata">

**Author:** ![Nasir\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/838e76/32.png) [@Nasir\_K](https://www.ruby-forum.com/u/Nasir_K)\
**Post date:** [June 24, 2009, 12:49pm UTC](https://www.ruby-forum.com/t/sipper-2-0-0-released/170922/2 "2009-06-24T12:49:08Z")

</div>

On 24 Jun 2009, at 03:48, Nasir K. wrote:

> for 2.0.  
> from SVN and build SipperMedia binary under /media/ and copy the  
> binary to /bin. Then build the gem using “gem build sipper.gemspec” or  
> rake task

The overview would be more helpful if it started with a description of  
what sipper is 🙂

Ellie

## Eleanor McHugh Games With Brains [http://slides.games-with-brains.net](http://slides.games-with-brains.net)

raise ArgumentError unless @reality.responds\_to? :reason
