If the dlg object is freed, then don't try to log
things based on the call-id value taken from it.
Just do slightly before.
Change-Id: I09e865ca77d64c6c398cf8dc35c189e076fdb26d
Volatile increments/decrements are deprecated by C++20,
use a full operation instead.
Fixes:
18: 57:47 AmSession.cpp: In static member function 'static void AmSession::session_started()':
18: 57:47 AmSession.cpp:607:3: warning: '++' expression of 'volatile'-qualified type is deprecated [-Wvolatile]
18: 57:47 607 | session_num++;
18: 57:47 | ^~~~~~~~~~~
18: 57:47 AmSession.cpp: In static member function 'static void AmSession::session_stopped()':
18: 57:47 AmSession.cpp:624:3: warning: '--' expression of 'volatile'-qualified type is deprecated [-Wvolatile]
18: 57:47 624 | session_num--;
18: 57:47 | ^~~~~~~~~~~
Change-Id: I68ad2cee9396765b0df1ba5b583435c326154dde
* 1.4:
b/f: fix incorrect parsing of keys with semicolon at the beginning in get_header_keyvalue
[systemd] Restart in case of failure
[init-script] Fix diractory for Pid-file
b/f: fix false positive matching keys with prefixes in get_header_keyvalue
Added missing /etc/sysconfig/sems file to the pkg/rpm
1.4 branch build version
updated changelog for 1.4.3 release
SEMS 1.4.3 release
c/f: revert a83b8e1 as it can cause some issues with the linker
c/f: make it possible to pass CXX / CC from env vars
c/f: make callgen compile using proper IP for From host
core: name default interface as "default"
core: handle exceptions in out-of-dlg messages gracefully
b/f: stopping failed outbound calls
b/f: AmCondition::wait_for_to nsec overflow
Add [Install] directive for systemd
applications which are doing outbound calls should implement
onFailedOutboundCall if the behavior should be different than
setting stopped.
Reported by Andrei Samusenko
* 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 NAT flag (P-MsgFlags: 2) is passed only in the initial INVITE,
re-INVITE will set up the RTP stream to the private address, but not
enable symmetric RTP (comedia style send-to-where-i-get-rtp-from)
again. this fix remembers passive_mode for the call.
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
If NAT flag (P-MsgFlags: 2) is passed only in the initial INVITE,
re-INVITE will set up the RTP stream to the private address, but not
enable symmetric RTP (comedia style send-to-where-i-get-rtp-from)
again. this fix remembers passive_mode for the call.
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.
max/avg calls and calls/s values, can be accessed via
get_callsmax/get_callsavg/get_cpsmax/get_cpsavg from
- stats server
- XMLRPC through xmlrpc2di
based on a patch by Robert Szokovacs rsokovacs gammatelecom hu
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.
SIP message processing and Session event processing are now
enclosed in blocks with the form
vv <type> [<callid>|<ltag>] ... vv
^^ <type> [<callid>|<ltag>] ... ^^
where
<type> = M SIP message processing
<type> = S Session event processing
app level timers can now be used easily with the AmSession functions:
setTimer(int id, unsigned timeout)
removeTimer(int id)
removeTimers()
timersSupported()
- 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())
(code in signaling processing is always executed by the signaling
thread for that session only; if no globals are used, no re-entrant
code is necessary)
- 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)
A missing 'break' led to an abort(), in case incomming invite featured a
required '100rel' and config was also set to 'required' (lost on merge
from svn).
Bug spotted by Vladimir Broz.