ReSIProcate 1.1 Release-candidate 1

From reSIProcate
Jump to navigation Jump to search

Getting the software[edit]



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

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

svn export


svn checkout

Note that the scheme is https.

Release Notes v 1.1[edit]

Build System[edit]

New features[edit]

  • 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

Bug fixes[edit]

  • 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


New features[edit]

  • 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[edit]

  • fixed bug where DNS resolver would assert when attempting to do a query with no network connectivity (on OS X)


New features[edit]

  • 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

Bug fixes[edit]

  • 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 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
  • 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


New features[edit]

  • 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

Bug fixes[edit]

  • 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
  • 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


New features[edit]

  • 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)

Bug fixes[edit]

  • 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.


New features[edit]

  • 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[edit]