Milestone release-0.8.0

Completed 17 years ago (Nov 11, 2007 2:59:58 PM)

100%

Total number of tickets: 96 - closed: 96 - active: 0

applications

4 / 4

common

3 / 3

pjlib

10 / 10

pjlib-util

6 / 6

pjmedia

14 / 14

pjnath

10 / 10

pjsip

32 / 32

pjsua-lib

17 / 17


New Features

PRACK and UPDATE

PRACK (ticket #385) and UPDATE (ticket #5) have been implemented on this release, including all the quirks with the management of SDP offer and answer session when these SIP methods are involved.

Symbian

Symbian support is getting more matured, with the implementation of Symbian sound device abstraction (ticket #2) and support for building the libraries as Dynamic Shared Object (DSO) files, which are needed for building developing for S60 3rd Edition using Code Warrior (ticket #354).

Updated STUN, TURN, and ICE

STUN, TURN, and ICE have been updated to the latest specification (ticket #374, #382). Many bugs have also been fixed.

Custom SIP Presence Status Text

While previously PJSIP only supports basic online/offline status, now PJSIP supports specifying and receiving custom presence status text by implementing subset of RPID (ticket #336)

More robust NAT handling

For SIP, keep-alive mechanism has been implemented for UDP transport at PJSUA-LIB level (ticket #407), and both TCP and TLS transports at the transport level (ticket #95). Because of these the default registration interval is now extended to 5 minutes. The client registration session will also keep the transport open until it is destroyed, so that server can send SIP requests using this transport (mandatory for TLS, and could be useful for TCP) (ticket #390).

For SIP UDP transport, pjsua-lib by default (pjsua_acc_config.auto_update_nat setting) will monitor the STUN mapped address as reported by registrar. When it detects that the mapped SIP transport address has changed, it will unregister previous Contact, create a new Contact based on the new transport address, and restart the registration. This would happen automatically without application assistance (ticket #381).

For media, ICE transport will automatically change its transport address based on the address returned in the STUN keep-alive packets (ticket #372). Also pjsua-lib will now reports to application via a callback when ICE negotiation has failed (ticket #370).

More Robust SIP authentication

PJSIP now supports responding to authentication challenge for any realms, by specifying wildcard ("*") as the realm in the credential (ticket #231). Although some have commented about security implications of this, a lot of people will find this feature to be very useful.

Basic support for 3GPP/IMS

Ticket #396 adds support for 3GPP/IMS digest AKA authentication (AKAv1-MD5 and AKAv2-MD5). Ticket #400 adds support for Service-Route header processing.

Much improved audio latency on Windows

Audio latency on Windows (Win32) has been improved by several hundreds milliseconds. This should make the echo cancellation (AEC) works better too, so default EC tail length has been decreased from 800 ms to 200 ms.

Ticket #393 changed basic audio frame time, from 20 ms (hard coded as PTIME macro in pjsua_media.c) to 10 ms, and make this configurable. Default PortAudio sound driver backend was also made configurable, with the default is WMME (ticket #384). The default number of sound buffers (PJMEDIA_SOUND_BUFFER_COUNT) has been reduced from 16 to 6 (ticket #394). WMME audio latency buffering in PortAudio is now limited by 100 ms by default (ticket #395).

For more information, please see Audio latency question in PJSIP FAQ.


Enhancements Details

Enhancements that have been or will be applied on this release:

common

#354
Build the libraries as dynamic libraries (.DSO) in Symbian

pjlib

#314
Added PJ_SAFE_POOL configuration in PJLIB to track down memory corruptions
#315
Ability to override pj_assert
#333
Added buffer overflow detection in vsprintf emulation for Symbian
#358
Link dynamically with IPHLPAPI.LIB (thanks Jim Gomez)
#367
Hash table will duplicate the hash key (thanks Scott Lu)
#403
Ability to specify RConnection instance etc in PJLIB Symbian

pjlib-util

#325
More tunable settings in DNS resolver
#326
Add unit tests for DNS resolver and DNS SRV resolver
#329
Added utility function to parse DNS A response
#330
Changed DNS SRV resolver to use the new DNS A response parser
#332
Enlarge default buffer size for caching DNS responses from 512 to 1000 bytes

pjnath

#374
Update STUN specification from rfc3489bis-06 to rfc3489bis-10
#382
Update ICE from draft-ietf-mmusic-ice-14 to ice-18 specification
#392
Added configuration to enable old, rfc3489bis-06 and older, style of MESSAGE-INTEGRITY and FINGERPRINT calculation
#399
Added tool to perform NAT type detection/classification

pjmedia

#2
Symbian sound device implementation
#335
Detect timestamp jump to avoid excessive CPU usage in master clock (thanks ChenHuan)
#373
Packet loss simulation in PJMEDIA ICE transport
#377
Support for sending RTCP RR
#384
Prefer to use Direct Sound as the sound device backend on Windows
#388
Support for receiving RTP packet with no payload
#394
Reduce PJMEDIA_SOUND_BUFFER_COUNT default setting from 16 to 6 to reduce audio latency
#395
Added configuration to control maximum PortAudio sound buffer latency
#398
Support for Secret Rabbit Code (aka libsamplerate) sample rate conversionl library

pjsip

#5
Support for SIP UPDATE (RFC 3311) and fix the offer/answer negotiation
#95
Keep-alive mechanism for TCP and TLS transports
#231
Add the ability to respond to any realms in SIP authentication
#324
Allow '#' character in the user part of URI of incoming message (thanks Esbjörn Dominique)
#331
Changed PJSIP DNS SRV resolver to use PJLIB-UTIL DNS SRV resolver
#336
Support for specifying custom presence status text in PJSIP SIMPLE
#337
Ability to restart PJSIP UDP transport
#338
Handle maddr parameter in URI when sending SIP requests
#339
Respond correctly to incoming INVITE/re-INVITE without offer and receive answer in ACK
#341
Sending raw data with PJSIP transport
#342
Add PJSIP configuration to optimize the size of outgoing SIP messages
#352
Configuration to turn OFF Via sent-by checking in SIP responses to support IP address change
#379
Implement merged request detection
#385
Support for reliable provisional response (100rel, PRACK)
#390
Register session will keep transport instance so that keep-alive is sent
#396
Support for 3GPP/IMS digest AKA (AKAv1-MD5) SIP authentication
#410
Endless authentication retries when 401/407 response contains no challenge

pjsua-lib

#334
Added on_pager_status2() callback to receive the full SIP message of IM delivery status (thanks Paul Levin)
#370
Notification to application when ICE negotiation fails
#381
Auto-update IP address/port in Contact header according to the IP address/port received in REGISTER response
#391
Added framework to send and receive arbitrary requests within call in PJSUA-LIB, with samples to send/receive DTMF with INFO in pjsua application
#393
Added configuration to set basic audio frame length to minimize audio latency
#400
Support for Service-Route header (RFC 3608)
#405
Subscribe to buddy presence upon receiving incoming subscription from the buddy
#406
New PJSUA API to update buddy's presence subscription
#407
Keep alive for UDP transport
#409
Update Contact address/port from the rport in REGISTER response to work with symmetric NATs

applications

#345
Option to select random start port in pjsua
#350
Support for parsing quoted arguments in pjsua config file (thanks Scott M Ober)
#360
Support for strict routed requests in proxy sample (thanks Helmut Wolf)
#389
Added new commands in pjsua to change codec priorities and send UPDATE


Known Issues

Known issues that have been or will be fixed on this release:

common

#365
Fix log decoration (thanks Thiago Paiva Flores)
#380
Build problems because of mount directory problem on Mingw (thanks Lafras Henning)

pjlib

#340
File access problem on WinCE
#343
Canceling pending ioqueue operation in Symbian causes assertion failure
#348
Various bugs in string comparison functions
#376
Bug in ioqueue prevents re-registering more than PJ_IOQUEUE_MAX_HANDLES (thanks Phil Torre)

pjlib-util

#328
Possible alignment error in DNS encoding

pjnath

#321
Assertion in ICE stream transport when STUN is not used (thanks Frank Nießen)
#322
Crash in ICE when adding peer reflexive candidate
#344
ICE negotiation failed when remote doesn't support RTCP
#368
STUN keep-alive timed out when ICE is used
#369
ICE negotiation fails after endpoint has been idle for long time
#372
Handle case where STUN mapped address has changed in ICE

pjmedia

#317
Duplicated audio when playing WAV playlist (thanks Jagdish Jangid)
#357
Missing tonegen.[h/c] in Windows CE project file (thanks Paul Levin)
#361
Extraneous RTP packet with RFC 2833 DTMF events (thanks Pedro Sanchez)
#363
Incorrect RTP marker and timestamp in DTMF event/RFC 2833 packet (thanks Pedro Sanchez)
#366
Crash in SDP negotiator when initial local SDP is not specified in pjmedia_sdp_neg_create_w_local_offer() (thanks Philippe Leuba)

pjsip

#316
Crash in registration session when transport returns error on sending authentication retry
#318
CSeq generation may produce negative number on Blackfin/VisualDSP++ (thanks Jarek Szymkowski)
#346
Possible deadlock in event subscription framework when subscribe is followed immediately with unsubscribe
#347
Assertion failure when handling incoming presence subscription with Expires=0
#349
Crash when sending PUBLISH when network is unreachable
#356
Prototype and definition mismatch causing crash in sip_auth_server.c (thanks Truong Thanh Quang)
#359
Wrong Via branch generation in proxy causing the same branch value to be generated for RFC 2543 clients (thanks Helmut Wolf)
#362
Transaction timer I in Completed state should be zero for reliable transports (thanks Ivan F. Skripov)
#371
Bug with REGISTER expiration calculation (thanks Philippe Leuba)
#383
Bug with handling Via received and rport parameters for response message
#387
UAS dialog should add Contact header in 1xx response
#397
Bug with handling large SIP message body (thanks Helmut Wolf)
#401
Unable to register when account URI contains display name
#402
Endless error loop when TCP accept() continuously returns error
#408
Route set shouldn't be updated once it has been set (thanks Anshuman S. Rawat)

pjsua-lib

#319
Assertion failure in pjsua when adding buddy with invalid host (thanks Paul Levin)
#320
Assertion error in pjsua when unregistering/removing account while network is disconnected (thanks Bo Huang)
#327
SIPS URI in Contact header generated by pjsua causing problems with OpenSER
#351
Possible deadlock in pjsua-api presence subscription (thanks Paul Levin)
#353
Memory "leak" with pjsua file player/recorder
#355
Account ID is not initialized in pjsua_call_info for outgoing call (thanks Lemmel)
#386
Over-deinitialize sound subsystem in pjsua_media.c (thanks Jiandong Ruan)

applications

No results

Note: See TracRoadmap for help on using the roadmap.