= Release Notes v 1.3.4 = ==stack== ===Bug fixes=== * fixed a couple of vulnerabilities that would allow an attacker to quickly run the stack out of memory (the bytes-in-memory/bytes-on-wire ratio was extremely large for these; one was approximately 500000, the other could easily get to 1000) = Release Notes v 1.3.3 = ==rutil== ===Bug fixes=== * fixed an assert bug when an excessively long domain name was passed to the DNS resolver (this could easily effect the proxy, for instance) = Release Notes v 1.3.2 = ==rutil== ===Bug fixes=== * fixed a bug where an FD (and some memory) would be leaked when a log-file rolled over ==DUM== ===Bug fixes=== * fixed a memory leak that occurred when a dialog-creating provisional was followed by a failure response = Release Notes v 1.3.1 = ==Build System== ===Bug fixes=== * fixed an issue where OSTYPE wasn't set properly (under tcsh) ==stack== ===Bug fixes=== * fixed a bug where badly formed nonces were not reported as badly formed, but as bad credentials * fixed a bug where outbound decorators could be called twice when flow tokens were being used (this manifested in the proxy, primarily) * fixed bug where outbound decorators would be called twice if DNS failover occurred * fixed bug where ACK/failure wasn't being sent down the same flow as the INVITE ==DUM== ===Bug fixes=== * fixed an iterator corruption bug caused when ending a Dialog that had multiple subscription usages in it * fixed a bug in ServerInviteSession where onConnected() would be called before the state transition to Connected ==repro== ===Bug fixes=== * fixed a couple of bugs that would cause extra Record-Route headers to be added to outgoing traffic = Release Notes v 1.3.0 = ==Build System== ===Bug fixes=== * Fix when building under GCC4.3 - std::auto_ptr now requires header include, as per http://gcc.gnu.org/gcc-4.3/porting_to.html * Updated VS2003 project settings for TFM so that it now builds * Updates to VS.2005 project files ** link using newer OpenSSL library names ** use static OpenSSL libraries, so that DLL's are not required ** remove iphlpapi from Repro Setup_8_0.vdproj * Fixed a compile issue in Timer.cxx under CE ==rutil== ===New features=== * Improved doxygen * Host file lookup for A records ===Bug fixes=== * Fixed a bug in ThreadIf for Win32 to ensure we don't close an uninitialized thread handle * Better behavior in the DNS code when the network is unavailable * ThreadIf::waitForShutdown() returns immediately if the thread is already shutdown ==stack== ===New features=== * Improved doxygen * Allow setting an external stats handler on a SipStack * The stack can now be configured to check for and fix bogus dialog identifiers in responses (ie, response contains different dialog identifiers than the request did) ===Bug fixes=== * Corrected some invalid diagnostic log messages related to certicates * Changes were made to SdpContents to ensure sdp attribute insert ordering on encode * Fixed SdpContents bug - the getValues() API would not correctly retrieve the session level attributes if the attribute was not found at the media level * Added missing Max-Forwards to cancel requests (and failure ACKs) - Helper.cxx * Fixed bugs where the transport param on Contact headers could be incorrect if DNS failover occurred * Fixed a case where openssl would operate on a socket that was not yet connected * Fixed a bug where copies of MultipartMixedContents could sometimes end up having two copies of each part from the original * Fixed a turn-related memory leak * Fixed a bug where TransactionState would send a simulated ACK/503 to the TU when no DNS results were present * Fixed an assert that could be triggered if the TU put a port in the topmost Via * Fixed DNS greylisting for INVITE transaction timeouts * Fixed an assert that could be caused by a reciprocal SYN * Fixed a core in Security c'tor on *nix systems when HOME is not set ==DUM== ===New features=== * You can now send a sip message body in a InviteSession REFER request * NIT requests (REFER, INFO, and MESSAGE) can be queued by the DUM - applications no longer need to be responsible for this * Improved debug dump methods on various classes * Path and outbound support in registrar code * Added a function to ServerAuthManager allowing subclasses to specify whether bad nonces should get a 403 or a 401 ===Bug fixes=== * Fixed a condition where a short-term usage request (such as OPTIONS) during the setup phase of a UAC dialogset can cause to be prematurely destroyed * Fix in DialogSet state transition - for UAC dialogsets responses to requests that are not the original request could cause the dialogset state to change incorrectly. 2 examples that are now fixed: ** Forked Call - before call is answered a BYE is sent to one leg of the call - the 200 to the BYE caused the dialogset to transition to Established incorrectly ** PRACK - the 200 response to a PRACK request caused the DialogSet state to incorrectly transition to Established * Fixed systematic memory leaks in DUM caused by responses having different dialog identifiers than the requests (required a new feature in the stack) * Fixed a memory leak in ServerAuthManager caused by sending a challenge or rejecting a request after doing an async auth lookup * Fixed a bug where the server publication code was generating garbage etags ==repro== ===New features=== * added outbound support * added configuration for specifying whether bad nonces should cause a 403 or a 401 ===Bug fixes=== * fail gracefully if a certificate that doesn't exist is requested by repro cert server * fix for repro crash when updating or erasing routes ==DTLS wrapper== ===New feature=== * the dtls wrapper is new code that is seperate from the resiprocate stack, and provides wrapper logic for integrating DTLS/SRTP functionality into media stacks ==reTurn== ===New feature=== * reTurn is a Stun/Turn server and client library implementation of the (almost) latest Stun/Turn drafts: RFC3489bis13, and draft-ietf-behave-turn-05 ** for more information please see README.txt in the reTurn directory = Release Notes v 1.2.3 = ==rutil== ===Bug Fixes=== * Fixed a memory-corruption bug caused by alignment issues within a memset call (in ares) = Release Notes v 1.2.2 = ==Build System== ===Bug fixes=== * Fixed a few build errors/warnings * Disable cppunit doxygen build (in tfm) ==rutil== ===Bug fixes=== * Fixed a bug in Timer under CE * fixed a bug in DnsUtil::getInterfaces() that occurs on 64Bit architectures, where no interface other than the local loopback is found, and therefore none is returned ==stack== ===Bug fixes=== * Fixed a sockets incompatibility with OS 10.5 (Leopard) * Fixed bug where name-addr would be parsed as an "all-contacts" if the display name began with a '*' (ie, Contact: *bOb* ) * fix Uri:::getAor() for IPV6 hostnames * fix for SdpContents::findFirstMatchingCodec - to ensure codec list is built before accessing * fix a double-free bug in SipMessage::releaseContents() * fix for a TLS client connection spin issue, when connection to endpoint can't be established ==DUM== ===Bug fixes=== * handle cases where there is a missing Expires header in the 200 to a SUB * added missing copy of mTransactionId in copy constructor of DumTimeout * correctly handle some cases where application may call end() from a callback (in InviteSession) * fixed a bug where ACK/200 was not being retransmitted correctly ==repro== ===Bug fixes=== * thread safety fixes to BerkeleyDb = Release Notes v 1.2 = ==Build System== ===New features=== *Added support for arbitrary cross-compilation targets using the gnu toolchain *Added VS 2005 build *Updated XCode project files ===Bug fixes=== *Small FreeBSD fixes to build *Fixed compatability issue with earlier versions of gperf ==rutil== ===New features=== *Added ability to configure log level on a per-component basis *Logging improvements related to DNS code *Allow DNS code to try DNS servers on different network when 'No such name' (reply-code of 3) is received *Fixed compilation warning on FreeBSD in Socket.hxx related to FD_SETSIZE *Recursive mutex support for OS X 10.2 or higher *Improved logging of exceptions ===Bug fixes=== *Fixed crash bug in SysLogBuf *Fix so SIOCGIFCONF works in Solaris *Fixed a bug where we could switch versions of make(1) when recursing *Fixed an assert bug in the DNS code caused by garbage in the host being looked up ==stack== ===New features=== *Added DNS Greylisting support (to contrast with DNS blacklisting) *Added Uri::toString() method *Add support for CN codec in SdpContents *Added support for ext parameter *Remote-Party-Id support *Improved efficiency of handling TCP-based connections *Send TransactionTerminated message when TU mistakenly CANCELs a client INVITE transaction that has not yet received a provisional *ParseException is now the only exception type that is thrown due to parse errors. *Better support for WWW-Authenticate in Helper::authenticateRequest() and Helper::authenticateRequestWithA1(). *Improved logging of exceptions ===Bug fixes=== *Fixed crash bug caused by receipt of an unreasonably large Content-Length in a connection-based transport *Fixed crash bug associated with Transports that run their own process loop *Fixed memory leaks caused by certain types of garbage in certain types of parameters *Fixed a memory leak caused by requests with a garbage topmost Via *Fixed a bug where INVITE responses would go back to the source port over UDP *Fixed bug where qop-options was being tokenized incorrectly by the digest auth code *Support URI entries in the x509v3 subjectAltName *Fixed a bug where unknown headers that were a prefix of another unknown header would be classified as the same. *Removed build warning in MsgHeaderScanner ==DUM== ===New features=== *Added UAC PRACK support *Added asynchronous (message-passing) interface to the various subclasses of BaseUsage: **ClientRegistration **ClientSubscription **ClientPagerMessage **ClientPublication **InviteSession **ServerInviteSession **ServerPagerMessage *Allow mutex lock while in DUM's main process loop for thread safety *Added MasterProfile::removeSupportedMimeType method *Implemented Handle::operator<, allowing for use with set or map *Changed signature of ImsAuthUri methods to accomodate a username that includes the domain ===Bug fixes=== *Fixed crash bug that could happen when a ClientSubscription re-establishes itself in a new Dialog after the other endpoint has crashed *Fixed problem where ReferredBy was set to contact instead of aor - 2 cases *Calling Dialog::end() will now end subscription usages *Fixed bug where MergedRequestKey::mCheckRequestUri was not being initialized in c'tor *Fixed bug where receiving a response other than an INVITE/487 after a CANCEL was sent would not result in an onTerminated() callback *Fixed leak in InviteSession that could caused if remote endpoint got the CSeq wrong on an INVITE/200 *Fixed bug in ClientSubscription::removeBinding that would remove all bindings except the one passed *Fixed totally broken well-formedness check in DUM's main process loop *Fixed bug where InviteSession was not setting a timer on reINVITEs *Fixed bug where InviteSession would fail to respond to requests received while it was waiting to terminate, causing TransactionState leaks *Fixed memory leaks caused by ServerRegistration when a REGISTER request had a malformed Expires or Contact header *Fixed assert bug caused by absence of a From-tag in a response from the wire *Removing some unimplemented functions from DialogUsageManager.hxx *Fixed an uninitialized member in Handle ==repro== ===New features=== *Added some help text to the web admin for AddRoute *Added command line option to repro to allow parallel forking to all Targets collected from static routes *Allow location of database files to be configured *Allow disabling of auth-int ===Bug fixes=== *Added locking to repro Store classes that have a local cache for thread safety *Order of Routes works now *Fixed bug where no response was forwarded back on a NIT timeout (was also causing a memory leak) *Fixed bug where responses to a proxied request with an RFC 2543 transaction identifier would not be forwarded back (also was causing a memory leak) *Fixed memory leak caused when a response to a proxied request came back with a different Via stack (except the topmost Via) *Fixed memory leak caused when a when a non-ACK request had the same transaction-id as a previous ACK/2xx *Fixed a bug where receipt of an INVITE/2xx _after_ a CANCEL had arrived would force CANCELs to go out on all other legs, regardless of whether those legs had received a provisional response *Fixed a bug where receipt of a provisional response would not prompt forwarding of a CANCEL if an INVITE/2xx had already been forwarded upstream *Fixed bug where async Processor messages were not being routed to the correct Processor *Fixed compilation issues with RouteStore *Fixed bug where enabling q-value processing would cause static route targets to be processed after location service targets. ==tfm== ===New features=== *Better UPDATE support *Better support for controlling option tags *491 support *rudimentary support for sending transaction garbage *many transaction garbage test-cases = Release Notes v 1.1 = ==General== ===New features=== *updated license blocks *sipdial, a very simple dialer demo ==Build System== ===New features=== *shared library support for OS X *location of db4 headers is now configurable (only matters when building repro/tfm) *ares install path can now be configured *added ability to specify a particular copy of OpenSSL to use ===Bug fixes=== *fixed shared library build on x86_64 *fixed install-paths for header files of stack and dum *fixed spurious error messages when generating binaries *made configure script work properly with stock sh ==rutil== ===New features=== *DNS resolver will now pay attention to host entries in the NetInfoManager (OS X) *removed ATL dependencies (Windows) *allow the tagging written by the logging system to be turned off ===Bug fixes=== *fixed bug where DNS resolver would assert when attempting to do a query with no network connectivity (on OS X) ==stack== ===New features=== *SIGCOMP (RFC 3320) support *new non-INVITE transaction behavior with respect to 100 Trying (see RFC 4320) *wrote LazyParser::isWellFormed() This allows exception-safe checking of whether header-field-values are well-formed or not *changed handling of bad ACK/200 (ie, ACK/200 with same tid as original INVITE), previous code did not work reliably (a feature because this is an act of protocol repair) *update to Identity test-case to reflect draft changes *a much more thorough DNS resolver unit-test *allow ServerAuthManager to be configured to challenge with 401 instead of 407 *added a base-class StatisticsHandler, allowing third-party code access to the statistics generated by the stack *added ability to retrieve/set encodingParameters from rtpmap line for audio codecs this represents number of channels ie: a=rtpmap: 0 pcmu/8000/2 (where 2 is the encodingParameters) *more readable logging of sip messages *added support for AnswerMode and PrivAnswerMode headers *allow codecs with no encoding parameters to be equal to a codec with an encoding parameter of "1" - ie. Note: for audio channels the encoding parameter represents the number of channels and the default is 1 ===Bug fixes=== *fixed a bug where a TU sending multiple requests with the same tid (ie, ACK/200) could cause an assertion in the stack, if DNS resolution had not yet been completed *fixed a bug that could corrupt a TransactionMap::iterator if the same tid was added multiple times. Also fixed another bug that was causing this bug to exhibit *fixed a bug where malformed IPV6 addresses in sip uris or vias could cause the stack to assert *fixed bug where lower-order bits of IPV6 addresses were chopped off (Windows) *fixed a bug in SdpContents where a "u=" was not being encoded *fixed bug where the TransportSelector would automatically fill in the wrong end of the Record-Route stack *hardened the stack against garbage Referred-By and Record-Route headers *stack now checks whether required header-field-values are not the empty-string *fixed a bug that was causing CPU spin while establishing a TLS client connection *major fixes to the RFC 3263 DNS logic **DNS logic now pays attention to what transport types the stack supports when choosing targets (won't choose a TCP target if we don't have a TCP transport, for example) **fixed an assert bug that could be triggered by the 3263 DNS logic if the stack was not running any UDP transports **blacklists are now done on a Tuple+hostname basis, instead of a DNS-path basis. **fixed a bug where failure in an A lookup could cause us to not pursue additional SRV records **fixed a bug where NAPTRs were being selected incorrectly for sips uris **blacklists actually have a duration that can be set now (ie, we pay attention to the value of Retry-After now) **stack no longer breaks spec by blacklisting on 408, 500, 600, or 503 without Retry-After *fixed openssl memory deallocation issue *when sending responses, only use default port if no port is specified in either rport or elsewhere in topmost Via *fixed a bug where non-standard settings to Uri encoding tables, if made _before_ initialization, would be lost when initialization occurred *removed a default param in SipStack::addTransport that would cause an assertion if used *compensated for a reentrancy issue with random() on SMP systems, when openssl wasn't built in, in Helper::computeCallId() *disable DTLS test-case if USE_DTLS wasn't defined *in SDP parsing, don't read TTL if connection address is IPV6 *in SDP parsing, fixes for ipv6 multicast ranges in connection line * fix to medium::getConnections, so that it will not return session level connections, if a media level connections are present *fixed escaping of headers embedded in SIP URIs *fixed a compiler warning in SipStack.cxx *fixed issue with truncation of blacklist durations *fixed type of expires parameter (was a UInt32Parameter, is now a QuotedDataParameter) *fixed bugs on Windows 2000 related to iphlpapi.dll and freaddrinfo *fixed an issue in 400 message generated by TransactionState, so that proper reason text gets populated in message ==DUM== ===New features=== *allow configuration of whether the request-uri should be used in merged-request detection (B2BUAs and gateways need to do this) *allow UPDATE to be used for a target refresh *allow re-INVITES and UPDATEs to update the Peer P-Asserted-Identity *added optional earlyFlag to ServerInviteSession provisional to allow caller to suppress addition of SDP answer to provisional body (after calling provideAnswer) if desired ===Bug fixes=== *fixed bug where reception of a REFER could cause a crash if no clientsubscriptionmanager is present *fixed a bug where a bad in-dialog response (modified to-tag) would prompt a dialog creation, and cause a crash *fixed various memory leaks caused by garbage from the wire *only 2xx responses to the original request can effect the route-set *fixed bug where sending a PUBLISH while a previous PUBLISH (for the same state) was pending would cause an empty PUBLISH to be sent *do not create dialog state on a 180 response with no to-tag *fixed two cases where the absence of an Expires header would be interpreted as an Expires of 0 (in ClientPublication) *fix to make sure onSuccess is called after a timed retry on registration failure *fixed a bug where mime type accessors in MasterProfile were using the subscript operator on the underlying map, potentially creating useless empty entries in the map that shouldn't be there *ensure onSuccess callback is called after a successful registration following an onFailure or onRequestRetry (in ClientRegistration) *added some missing states to isAccepted() (in InviteSession.cxx) *fixed a bug where InviteSession would send BYE/481 if we _received_ a BYE while a BYE we _sent_ was pending. (Both sides send BYE, race-condition) Now sends a BYE/200 *ClientInviteSession can now handle BYE gracefully in any situation *fixed an erroneous log statement for stray responses *fixed some error logs in InviteSession related to bad state in provideOffer *removed an assert in InviteSession::targetRefresh *use consistent method for determining chalenge realm; fixes issue where challenge realm was hardcoded to requestUri host after stale nonce was received *fix to make sure initial publish (no sip-if-match) arriving without a body generates a 400 ==repro== ===New features=== *lots of hardening against garbage in sip messages (fixed a lot of leaks that could be triggered by bad sip requests) *Changed the handling of ACKs completely; they no longer follow the same code path as other requests (nothing will cause us to perform location service of any kind on an ACK now) *stopped using the cid Uri-parameter hack for telling the stack what connection to send a request on (no more "cid=" in the request Uri; "cid=" may appear in Route-type headers however) *updated .vcproj (Windows) *modified getConfig calls to avoid copies ===Bug fixes=== *if certServer is enabled, only PUBLISH and SUBSCRIBE with certificate or credential event types will be passed to dum *fixed a bug where a Record-Route could be inserted with a scheme that did not match the scheme of topmost Route header, if present *improved the code that determines whether we are responsible for a given Request-Uri (could run into problems while running on a non-standard port) *retransmissions of ACK/200 all use the same tid now, also only a single Ack200Done message will be posted now *fixed repro problem where cert server defaults to on, and cannot be disabled *fixed an issue where repro would reject registrations that contain unknown Accept header values, if the cert server was enabled and MasterProfile validateAccept was enabled. *fixed an issue with port checking code when running repro on a non-standard port (not 5060), and reaching it either via DNS SRV resolution or a UA outbound proxy setting *UserStore - corrected naming domain->realm *ConfigStore - added cache of DB *UserAuthGrabber - corrected issue comparing domain to realm *repro project - added missing header files ==tfm== ===New features=== *ipv6 support *support for testing PRACK *added the ability to test receiving a SUBSCRIBE as the FIRST message in response to an INVITE request. i.e. the SUBSCRIBE creates the dialog as opposed to 1xx or 2xx response ===Bug fixes=== = Release Notes v 1.0.3 = *fixed a bug where malformed IPV6 addresses in sip uris or vias could cause the stack to assert = Release Notes v 1.0.2 = * 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 = * 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 = == General Changes == === Overall project changes === * 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== === New Features === * 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 === * 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) == rutil == === New features === * synchronous A-record lookup in DnsUtil * added Data::replace === Bug fixes === * 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) == Stack == === New Features === * 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 === * 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) == DUM == === New Features === * 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 === * 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 == Repro == === New features === * 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 === * 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 == TFM == * a functor-driven test-framework, and lots of test-cases for repro.