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.
replace AmSession::rtp_str with AmSession::RTPStream() in your app.
for example for pure signaling B2B calls, no RTP stream instance is
created, which saves a lot of memory (especially because of
the RTP receive buffer)
ref r30371 r30372
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1784 8eb893ce-cfd4-0310-b710-fb5ebe64c474
to use it, set USE_THREADPOOL in Makefile.defs and configure thread pool
size with session_processor_threads= parameter in sems.conf :
+# compile with session thread pool support?
+# use this for very high concurrent call count
+# applications (e.g. for signaling only)
+# if compiled with thread pool, there will be a
+# thread pool of configurable size processing the
+# signaling and application logic of the calls.
+# if compiled without thread pool support, every
+# session will have its own thread.
+#
+#USE_THREADPOOL = yes
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1782 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- static library sip_stack.a (with dependencies on the core).
- removed AmServer and moved SipCtrlInterface into the core directory.
- TODO:
- CMake support to make core/sip/sip_stack.a and link against it in the core.
- merge AmSipRequest/AmSipReply and sip_msg structures.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1758 8eb893ce-cfd4-0310-b710-fb5ebe64c474