Preamble: no functional changes.
AmSdp::parse() mixes int values with bool,
what makes the behavior not really clear, not defined
and can lead to the unpredicted result (even though the
compiler *should* actually fix that, but one ought to
not rely on this).
Hence make the parse method only be working with bool values.
Then, reverse the return value so that it's clear
that wrongly parsed is `false`, and good parsed is `true`.
Refactor all users accordingly.
Also rework those users, who indeed need `int` value
be returned, e.g. when having -1.
Do the same thing with the `parse_sdp_line_ex()` helper,
whereas parse() is the only user of it. And also reverse
the interpretation of true/false.
Then, make `parse()` working with a plain `char*`, so not a const.
Because doing a tricks like:
cast `char*` to const (user level) -> cast `const char*` to non-const
in a function (in a old C-like manner), has really no sense.
Refactor everything accordingly.
Other than that, refactor AmMimeBody:
Refactor it to work with a plain `char *` pointer instead of working
with `unsigned char *`, which nowadays has really no sense and
rather is a rudiment of C-like code base coming from the past.
Convert `payload` from `unsigned char*` to `char *` accordingly.
Refactor everything in AmMimeBody implementation accordingly.
Remove rudiment C-like casting everywhere, where possible.
Update `parseMultipart()` to work with a plain `const char *`
instead of `const unsigned char*`
P.S.: leave a list of TODO's for further rework, which
is not directly related to this scope of rework.
Change-Id: Ie1e132429245e0d2cc740d5b1c1fc17cf037a820
app level timers can now be used easily with the AmSession functions:
setTimer(int id, unsigned timeout)
removeTimer(int id)
removeTimers()
timersSupported()
- 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)
o IvrSipRequest/IvrSipReply python objects need to destroy the underlying c++ object, if they own them (so not for dlg.invite_req, which is the original c++ object owned by the AmSession)
o IvrSipRequest/IvrSipReply python objects need to be DECREFd after calling the onSipRequest/onSipReply methods to free them
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1356 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
* pin_collect applications again has two modes: authentication via XMLRPC
server, and sending out transfer REFER with PIN in URI
* added documentation for pin_collect, and transfer for conference
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@257 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
* createThread function to create additionally running Python threads (e.g. servers)
This function expects a python callable and executes it in a new thread.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@74 8eb893ce-cfd4-0310-b710-fb5ebe64c474
* added python event handlers for onOtherBye, onOtherReply.
* improved event handlers bootstrap: by returning True, a python event
handler can choose to let the default c++ implementation beeing called.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@55 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