new sems.conf option:
Ignore too low CSeq for NOTIFYs? [yes | no]
May be necessary to interwork with simplistic/old (following 3265
instead of 5057) SIP event notification implementations.
ignore_notify_lower_cseq=yes
Conflicts:
core/AmSipDialog.cpp
* remotes/origin/1.4: (27 commits)
b/f: getHeader: find correct hdr also if it's substring of another hdr
b/f: support values at end of SDP without CR (master 8ec8a910a2)
b/f: T38 streams in SBC/B2B (udptl transport); proper media direction passthrough
click2dial: b/f: fix crash when using without credentials
Add systemd-related files to the pkg/rpm dir
Add libzrtp support to the CMakeFile
Fix c/p typo in cmake-files
Missing include for close(FILE *)
Drop privileges for SEMS process
b/f: in webconference app, handle session timer timeout and RTP timeout
b/f: on RTP timeout, end dialog with sending BYE
b/f: make listRooms return only non-expired rooms
b/f: B2BUA: fixed replies for error handling
b/f: fixing b6d5f726 (fix SBC SDP filter)
b/f: fix SBC SDP filter with connection per media only
add Retry-After: 0 to NOTIFY 500 response on low CSeq
b/f: click2dial: save content_type, cseq to connect callee
b/f: use proper empty string value
b/f: use proper failure return value
b/f: reset RTP-received timestamp when (re)starting process RTP stream
...
If an INVITE has been forked and more than one branch is aimed at SEMS,
then the branch parameter of the top-via is necessary to distinguish the
different sessions.
By default, SEMS will now accept forked INVITEs.
This behavior can be switched off by setting "accept_forked_dialogs" to "no" (default=yes).
Conflicts:
core/AmSipDispatcher.cpp
- the session pointer should not be touched after the session has been started (could be immediately destroyed).
- return 481 on CANCEL if the transaction cannot be found.
- reply properly with 482 if the UAS dialog already exists.
In case 100rel is disabled on SEMS' side, but UAC requires it, SEMS
would reject the INVITE, drop further processing on the session, but
still keep it. If INVITE is first in session, UAC would clear the
dialog, but SEMS would still keep it.
But spotted and explained by Stefan S.
- provisional replies received for canceled INVITEs are ignored
- if bye() is called for pending call and no UAC trans to cancel,
go into Disconnected state
In the context of multihomed servers, the signaling interface can be selecetd by the application. By default, the signaling interface is determined automatically. The media interface can also be set manually, there is however no automatic selection. In the case it is not set by the application, the default interface (the first one defined) is used instead.
- add reliable_1xx REL100_IGNORED, where all rel100 stuff is ignored
- set B2B sessions as reliable_1xx=REL100_IGNORED
- translate RAck Cseq
- for this: adds rack_method and rack_cseq to sip request (should possibly be reworked to use some dynamic field)
- relay Rseq (if exist)
- change the way RSeq accounting is done: changed signed data type to
unsigned, at expense of adding two more vars to AmSipDialog; this
should make AmSipDialog more replication friendly.
- b/f: if 100rel is disabled and an inbound request asks support for it,
reply with 420.
The 100rel logic moved in great part to AmSipDialog; this way, it can be
hooked directly to request/reply processing routines, the ones on top of
the transactional layer (::updateStatus(..)).
This allows to:
- better control when to push the messages into the AmSession's
onSipRequest/~Reply, fixing some issues with applications that received
replies, but without sending themselves the requests
- insert needed headers, no matter which request function is used
(::invite() vs. ..sendRequest())
- B2BUA app with SIP Session Timer (SST) now can also use UPDATE
(see session_refresh_method in sst_b2b.conf)
- if re-INVITE is used, normal SDP OA (INVITE+SDP/200+SDP) is done
using last established SDP (instead of delayed SDP negotiation
and SDP ping-pong)
- SDP is compared only after o= line (no SDP ping-pong with UAs which
always increase SDP version)