Difference between revisions of "ReSIProcate 1.0.2 Release"

From reSIProcate
Jump to navigation Jump to search
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
See [[reSIProcate 1.0.3 Release]].
Line 182: Line 184:
* fix for calling end on a client SUBSCRIBE (or PUBLISH) dialog before any response is received
* fix for calling end on a client SUBSCRIBE (or PUBLISH) dialog before any response is received
* ClientRegistration - use Expires header if no Contacts are present
* ClientRegistration - use Expires header if no Contacts are present
* modified dum so that expiration values use UInt32 instead of int for
* modified dum so that expiration values use UInt32 instead of int for storage
* fixed initialization of AppDialogSet::mIsReUsed
* fixed initialization of AppDialogSet::mIsReUsed
* ServerAuthManager no longer challenges ACK
* ServerAuthManager no longer challenges ACK
Line 209: Line 210:
== TFM ===
== TFM ==
* a functor-driven test-framework, and lots of test-cases for repro.
* a functor-driven test-framework, and lots of test-cases for repro.

Latest revision as of 18:12, 9 March 2007

Warning: The information contained on this page is known to be obsolete, you may want to ask on the mailing list for opinions around how to proceed if you are interested in this area.

See reSIProcate 1.0.3 Release.

Getting the software[edit]


The current release of reSIProcate is 1.0.2.


This release is made from the resiprocate-1.0.2 tag and can be checked out from the following SVN path:


For the standard subversion client you can fetch this with either:

svn export https://svn.resiprocate.org/rep/resiprocate/tags/resiprocate-1.0.2


svn checkout https://svn.resiprocate.org/rep/resiprocate/tags/resiprocate-1.0.2

Note that the scheme is https.

Release Notes v 1.0.2[edit]

  • Fixed a bug in the SRV load-leveling logic that could cause the stack to crash.
  • Fixed race-conditions in DUM that could cause a crash if a client reused transaction ids rapidly.

Release Notes v 1.0.1[edit]

  • Fixed a bug that would cause the stack to crash if it received a request with a single empty Via header.

Release Notes v 1.0[edit]

General Changes[edit]

Overall project changes[edit]

  • The resiprocate/os directory has been broken into two separate directories: rutil, and resip/stack.
  • DUM now lives in resip/dum. repro no longer resides within the resiprocate directory.
    • rutil consists of non-sip specific utility classes.
    • resip/stack consists of everything else that used to reside in resiprocate/os.

Build System[edit]

New Features[edit]

  • interactive configure script
  • implemented RESIP_FIXED_POINT compilation flag
  • added a PEDANTIC_STACK build flag that causes the stack to fully parse all incoming messages, and 400 if it finds garbage.
  • added support for stdext::hash_map for Visual Studio .NET 2003 builds
  • build system now handles absence of gperf gracefully

Bug fixes[edit]

  • changes so that build with openSSL 0.98 works
  • VS.NET project files - changed all C-Runtime libraries to use Multithreaded DLL - consistent with sipX projects
  • various OS X build fixes
  • fixed clean and distclean build system targets
  • header files are no longer installed with mode 755 (is 644 now)
  • ares is now installed (using shared libraries required its presence)


New features[edit]

  • synchronous A-record lookup in DnsUtil
  • added Data::replace

Bug fixes[edit]

  • fixed initialization of OpenSSL
  • use SO_REUSEADDR for windows sockets
  • fix to remove race condition in AbstractFifo::getNext(int ms)
  • many openSSL memory leak fixes
  • Fixed Data::hash for non-plaintext.
  • Fixed a memory corruption bug in oDataStream.
  • fixes to Data::find
  • fixes to conversion methods in Data
  • fixed static initialization bug in Log.cxx where we were exhausting pthread_keys
  • fixed a memory leak in DnsStub
  • removed a dependency on resip/stack (moved SelectInterruptor to resip/stack)
  • OpenSSLInit no longer writes stuff to std::cerr (bypassing the logging system)


New Features[edit]

  • allow StatisticsManager to be disabled at runtime
  • added a MasterProfile setting (allowBadRegistrationsEnabled) to allow DUM to accept Registrations that have a To: tag
  • added getTlsPeerName method to SipMessage
  • added clearDnsCache to SipStack (thread safe)
  • added logDnsCache to SipStack (thread safe) - outputs DNS Cache to WarningLog for debugging
  • modified TLS client domain name check to look through all possible peer names
  • support for namespaces in pidf documents
  • STUN client support (in UdpTransport class)
  • Added capability for adding a MessageDecorator through a dum profile
  • s/mime encryption for SDP and IM
  • lots of new documentation
  • added Identity strength accessor to SecurityAttributes
  • runtime detection of ares/resip USE_IPV6 mismatch
  • ENUM support
  • support for privacy as per rfc3325
  • support for service-route (IMS)
  • added a mechanism to register for a callback just before a SipMessage is sent on the wire

Bug fixes[edit]

  • fixed initialization of array that determines whether headers should be comma encoded
  • fixed many transactionstate memory leaks
  • fix to SdpContents for duplicate fmtp attributes
  • fix submitted by Justin Matthews for potential invalid pointer access of mDnsResult
  • remove trailing spaces from non-quoted display name (NameAddr)
  • fix memory leak of SecurityAttributes
  • SdpContents: fixed bug in Session::Time operator=
  • some time_t use fixes so that we compatible with VS.NET 2005's default definition of time_t - which is a 64-bit integer
  • fixed UInt64 conversion for nonce stuff - digest auth was failing
  • fixed many transport memory leaks - the biggest one is with receiving CRLF keep alives on UDP transports
  • made domain name cert check for Client SSL connection non-case sensitive
  • fix for computeTag to use passed in size
  • fix for CSeqCategory and RAckCategory to use unsigned integers for sequence numbers
  • fix for Tuple IPV6 hash on linux platforms
  • changed ExpiresCategory.cxx to be an UInt32 so that Expires parameter can handle up to 2^32-1 as in RFC
  • Fixed a few assert/memory leak bugs in TransactionState caused by method mismatches between Request Line and CSeq.
  • Fixed numerous memory leaks in TransactionState that couold be caused by certain malformed headers.
  • TransactionState no longer 503s ACK when overloaded
  • Major fixes to connection management in the stack (including memory corruption bugs)
  • Fixed issue where we were sending TLS over the wrong IP version when we had TLS transports on both versions open.
  • Fixed many integral-value overflow bugs.
  • Fixed a few other parser bugs (for q-value, senthost in Via, branch parameter in Via)
  • implemented auto_ptr version of SipStack::send() and SipStack::sendTo()
  • implemented auto_ptr based SipStack::post() and postMs()
  • Fixed handling of stray CANCELs
  • made codec comparison case insensitive (findFirstMatchingCodec function)
  • modified stunTest to use nonblocking socket and selectable timeout
  • Added some missing closesocket calls to the rutil\STUN functions (note that stun has since been moved to resip/stack)
  • removed the static "done" check in Security::Initialize(), it caused a bug when the object was instantiated a second time
  • Corrected the Codec constructor for telephone-event and frf-dialed-event constants. A payload type of 8000 was used. (Not wrong but usually 101 is used. 8000 rather is the bandwidth)
  • Added two more codec constants. (G723 and GSM)
  • removed the bogus sleep stuff from stunSendTest
  • fixed parse bug in Phone::parse
  • fixed a bad free in Security
  • fixed SipFrag memory corruption issue
  • fixed nonce generation
  • fixed a memory leak in Security
  • fixed array overflow bug in SecurityAttributes
  • fixed a per-key/cert leak in Security
  • fixed a memory leak caused by malformed Content-Length over a stream-based transport (TCP or TLS)
  • support for short version of event (o)


New Features[edit]

  • allow Initial invite without an offer (dum)
  • added support for sending and receiving MESSAGE requests in an Invite Session
  • added support for re-invite with no offer
  • allow contents to be sent in acceptNit (InviteSession)
  • added onConnectedConfirmed callback for ACK (without answer) on initial invite
  • add rinstance parameter to registration contacts so that we can tell which contacts from the 200 response are ours (dum)
  • added profile reset method (dum)
  • added ability to get peer capabilities from InviteSession
  • added store of all peer names presented in a certificate's subjectAltName list
    • if no subjectAltName, then commonName is used
  • implemented command pattern/target based feature handling in dum
  • support for Allowed-Events header in DUM
  • added new signature for makeInviteSessionFromRefer - that allows specifying the User Profile to use. (this is required when creating an Invite Session from a refer with no-subscription)

Bug fixes[edit]

  • fix for shutdown assertions if outstanding invite sessions
  • fix for receiving stray dialog/dialogset matching messages during delayed destruction
  • fix for ending() a registration while in the process of retrying
  • ensure all 4xx responses to invites are handled correctly in dum
  • fix for dialogset destruction bug - cleaned up redirect logic used to destroy dialog, but keep dialogset around
  • change ClientSubscription.cxx and ServerSubscription.cxx to send all messages via the Dialog::send interface, instead of the DialogUsageManager::send interface. This allows requests to be tracked by the Dialog - so that it can correctly respond to Digest challenges.
  • fixes to dum states for initiating a BYE while waiting for an ACK
  • dum fix for setting correct reason text for NIT responses
  • many misc. fixes to InviteSession state machine
  • ServerPublication: fix for uninitialized mExpires in onInitial callback
  • fix for early SDP in provisional's (dum)
  • allow additional provisionals in EarlyProvidedAnswer state (dum)
  • ServerAuthManager - do not challenge ACKS or CANCELs
  • make subscription state checks non-case sensitive
  • corrected some missing sets of mProposedRemoteSdp
  • fixed Glare state handling in dispatchGlare
  • fixed mProposedLocalSdp memory leaks auto_ptr::release change to auto_ptr::reset
  • fix for getLocalSdp and getRemoteSdp if values are not yet set
  • 2xx retransmission is now detected and handled properly - no more incorrect handler callbacks (dum)
  • fix issue with receiving 2xx retrans when dialog is destroying - reported by Justin Matthews
  • fixed MessageWaitingContents encoder attributes
  • be resilient to implementations that send sdp in 200/Update event though we didn't send an offer (ie. Cisco 7960)
  • InviteSession: separate mLastSessionRefresh into mLastLocalSessionRefresh and mLastRemoteSessionRefresh fixes bug where remote message headers could get used in outbound requests
  • fix for calling end on a client SUBSCRIBE (or PUBLISH) dialog before any response is received
  • ClientRegistration - use Expires header if no Contacts are present
  • modified dum so that expiration values use UInt32 instead of int for storage
  • fixed initialization of AppDialogSet::mIsReUsed
  • ServerAuthManager no longer challenges ACK
  • InviteSession now handles re-invites with late offer
  • fixed bug where DUM was ignoring Expires in SUBSCRIBE/2xx
  • fixed uninitialized SharedPtr in DialogSet


New features[edit]

  • Framework for better control of forking in repro.
  • Many improvements to Processor architecture in repro (with respect to asynchronous work), with helper classes for easily setting up thread-banks for async tasks.
  • Support for Q-Value based forking in repro.
  • Implemented Timer C in repro.
  • added recursive redirect support to repro
  • support for ACL in repro
  • rpm build for repro

Bug fixes[edit]

  • Fixed an assert bug in repro's WebAdmin that would allow an unprivileged user to cause an assert.
  • repro no longer will forward 503s
  • fixed a stl::vector<>::front call to a (potentially) empty container
  • repro no longer challenges ACK or BYE
  • fixed numerous memory leaks in repro
  • major assert sweep of repro


  • a functor-driven test-framework, and lots of test-cases for repro.