first version, wip.
todo:
- variable number of streams (now fixed to 3 - consumes many ports)
- symmetric RTP
- multi interfaces
- optimization: parse SDP only once, pass AmSdp object with request event
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
- 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)
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)
The incoming INVITE establishind a call is passed in
signaling only B2B mode to the B leg, which tries to
send it to the request URI.
SIP Session Timers are enabled on both legs. When the
timer expires, an empty INVITE is sent, and the resulting
SDP offer from body of the 200 is relayed into the other
leg, where it is sent out as INVITE with the offer. The
answer from B leg is relayed into A leg and sent as body
in ACK message.
SST expiration is configurable in confi file.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1821 8eb893ce-cfd4-0310-b710-fb5ebe64c474