[Blink] New SIP SIMPLE client SDK 0.30 release with Presence, GRUU, MSRP Switch and XMPP interoperability

Adrian Georgescu ag at ag-projects.com
Fri Sep 7 11:34:23 CEST 2012


SIP SIMPLE client SDK 0.30 release

There is a new release of SIP SIMPLE client SDK available. Version 0.30 incorporates Presence functionality based on standards from SIMPLE Working Group, compatibility with OMA, XMPP interoperability, GRUU (RFC5627), MSRP multiparty conferencing (MSRP switch) and critical bug fixes.


At over 15,000 lines of Python code, Presence is by far the most complex part of the SDK and the reason it took so long to produce. Presence functionality is now incorporated into an easy to use address book that can be used to develop contact-driven Real Time Communication clients without having to deal with the complexity of SIP signaling, XCAP storage and data replication among multiple devices.

The API is simple to use, at minimum you must use Group, Contact and Policy classes each of them with add/delete/update methods and eight notifications in total to manage the address book. Next Blink release will incorporate this functionality.

XMPP interoperability

Interoperability with XMPP for MUC and Presence payloads allows for the SDK to be used in border applications that interact with both SIP and XMPP protocols. NextSylkServer release will incorporate this functionality.

Change logs

python-sipsimple (0.30.0)

Added PUBLISH for presence and dialog events
Added SUBSCRIBE using RLS for presence and dialog events
Added SUBSCRIBE for presence.winfo and dialog.winfo events
Added handing for RLS NOTIFYs for presence and dialog events
Added Offline Presence capability using XCAP pidf-manipulation
Added Icon Storage using XCAP oma-pres-content
Added Presence policy management using XCAP oma-common-policy
Added Addressbook with Presence enabled Contacts
Added MSRP Switch NICKNAME support
Added GRUU support (RFC 5627)
Added ability to configure SIP loop detection
Refactored XML payloads framework and datatypes
Refactored the XCAP manager and its API
Refactored contact management into addressbook management
Refactored interaction between the account and its handlers
Honor Min-Expires header for REGISTER requests
Fixed building sipfrag payloads
Fixed crash when bogus G722 payload is received
Fixed crash on SDP version overflow
Fixed removing a stream if a negative response was received
Fixed engine failure on bogus incoming REFER requests
Fixed crash on RTCP decryption when using SRTP
Fixed handling re-INVITEs with empty body
Fixed subscribing to conference event from Bonjour account
Reply with 200 OK to in-dialog OPTIONS requests
Support hostnames in STUN servers list
Honor Min-Expires header for REGISTER requests
Skip processing bogus NOTIFY requests
Adapted to eventlet package rename
Raised dependency on msrplib and xcaplib due to API changes
python-xcaplib (1.0.17)

Beautify output XML data
Implemented a host cache with lifetime tied to the request's lifetime
Fixed the green HTTPClient to use host caching
Redefined some functions as methods and reorganized code a bit
Removed auth argument from XCAPClient and automatically support both
Only add username/password to the password manager if they are defined
Adapted to eventlet package rename
Bumped debian standards version to 3.9.3
Raised debian/compat version to 7
python-msrplib (0.15.0)

Added support for NICKNAME method
Made received chunk handling more flexible
Adapted to eventlet package rename
Bumped debian standards version to 3.9.3
Raised debian/compat version to 7
sipclients (0.30.0)

Print account GRUU if available
Fixed scripts to match API changes
Added ability to set nickname in sip-session
Removed obsolete scripts
Bumped debian standards version to 3.9.3
python-application (1.4.0)

Simplified and made ThreadLocal descriptor faster
Added timestamp and datetime properties on notifications
Made test more efficient
Removed unnecessary methods
Removed some old compatibility code
Added missing all entry in process.py
Changed order or arguments for timer.end() for convenience
Added MarkerType metaclass to application.python.types
Use MarkerType to define markers
Ordered imports alphabetically
Do not ignore base exceptions
Fixed documentation example
Added missing all to timing.py
Use MarkerType to define the markers used in queue.py
Moved imports at toplevel
Added weakobjectmap implementation
Replaced WeakKeyDictionary with newly added weakobjectmap
Removed some obsolete backwards compatibility code
Removed compatibility with python2.5
Replaced some old forms or raising an exception
Refactored Boolean data type
Use limit instead of locally defined constrain function
Be specific when catching exceptions
Fixed how we access the class attribute to work with subclassing
Added a center attribute to posted notifications
python-gnutls (1.2.4)

Fixed compatibility with twisted 11.1.0 for TLSServer as well
python-cjson (

Use repr instead of str when encoding floats to preserve full preicision
Fixed windows compilation problem introduced in 1.0.5
Fixed float write test to work with latest high precision float encoding
Fixed some list/dict decoding bugs. Use a state machine for decoding them.
Improved decoding speed by using PyString_GET_SIZE instead of strlen
Integrate modified 0001-fix-for-CVE-2010-1666 patch from Debian
Reworked debian packaging
Presence API Documentation

The address book API: source:sipsimple/addressbook.py at 4860#L1185
Presence API: source:sipsimple/account/__init__.py at 4961#L96
Software repositories



Due to Presence payloads sizes that exceed the network link MTU and potentially also the UDP maximum packet size of 64K only TCP and TLS transports are used for Presence
To avoid overloading servers, SUBSCRIBE works only with RLS http://tools.ietf.org/html/rfc4826, http://tools.ietf.org/html/rfc4662

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ag-projects.com/pipermail/blink/attachments/20120907/430ae226/attachment.html>

More information about the Blink mailing list