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
- active sessions and other event receivers
get a SystemEvent::ServerShutdown,
default behaviour of AmSession is setStopped()
- session container waits for all sessions to be ended
- signaling server, rtp receiver, media processor, event dispatcher
are stopped and deleted
based on a patch by Rui Jin Zheng rjzheng at boronetworks dot com
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1087 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- removed AmSIPEventHandler (its functionalities are now in AmEventDispatcher).
- added possibility for each plug-in to receive out-of-dialog messages (any kind).
- added possibility to handle dialogs without creating a session (=AmSession).
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1006 8eb893ce-cfd4-0310-b710-fb5ebe64c474
o moved adding Max-Forwards from ctrl plugins to AmSipDialog
o moved adding User-Agent from ctrl plugins to AmSipDialog
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@760 8eb893ce-cfd4-0310-b710-fb5ebe64c474
in the RTP stream. It is possible to disable this new behaviour using
single_codec_in_ok parameter in the sems.conf.
Developed by: Sippy Software, Inc.
Sponsored by: Digifonica Canada Limited
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@279 8eb893ce-cfd4-0310-b710-fb5ebe64c474
* changed apps that use session specific params to use P-Iptel-Param by default
* added getSessionParam function to ivr
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@260 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- on RTP timeout, AmSession::onRtpTimeout is called
- session can be removed from media processor (detached)
by AmMediaProcessor::removeSession
- removing session from MediaProcessor and clearing audio
is AmMediaProcessor::clearSession (default action on
RTP error)
- added detach from media processor to conf_auth and ann_b2b
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@209 8eb893ce-cfd4-0310-b710-fb5ebe64c474
* new methods onSipRequest/onSipReply, the whole AmSipReply/AmSipRequest structure is passed to python
SipDialog
* state is changed only on reply to INVITE, not other requests
* made pin_collect work
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@189 8eb893ce-cfd4-0310-b710-fb5ebe64c474
The patch is developed on FreeBSD 4.11-RELEASE and gcc 2.95.4, but is
expected to run on other BSD systems as well.
Note that it is "not done" to replace the gcc in a BSD base system,
hence the support for an older gcc.
The changes are minor:
* corrections in typing matters, including more header files
* alternative handling option for varargs in #define for pre-GCC3
* lowering the default UNIX_PATH_MAX value to 104 instead of 108
* clearing memory intended to store socket addresses
* a few remarks for FreeBSD-adopters and/or porters
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@39 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- sdp reply generation is now separated from the reply.
- new onInvite.
corrected a bug in getSession(callid,remote_tag).
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@22 8eb893ce-cfd4-0310-b710-fb5ebe64c474