Changelog for SEMS Version 1.4.3 SEMS 1.4 series bugfix release, should be a drop-in replacement to 1.4 installations. For details of the changes see the changelog below. If you are using custom applications which create outbound calls, please specifically test the behavior with the commit 26fdaa8e b/f: stopping failed outbound calls Many thanks to everyone who reported issues and contributed with patches. $ git cherry -v 1.4.2 origin/1.4 + 8a6f63b6eb1e5a016e929549af897e93b56c5df0 1.4 branch build version + 564bb0dced7bc8e64068e8e495dc70129a4b1a92 fix linking libssl for XMLRPC client + 9d4437e9cb4856829415f1f6e2908361cd572e7b b/f: distinct COREPATH for sbc tools + 23694e99b4572d4c2b22f89857b6aaa442e8bee9 b/f: fixed mem leak accumulating sip requests on failed auth + 7fd59bf2f318634c7d250df18ab5a31391a664dd enable unloading of module for cleaner shutdown + 37ae9dbee4f63ae40fecd67bfce9cc2837aa9395 b/f: don't wait in user timer destruction + f81ce844a9997fad8ce9987ce9046cb7440e9d3d b/f: on receiving re-INVITE without SDP, reply 488 and continue call + 0fbb1f9efeccf675340321a0d6af34946c1b9422 b/f: remember passive_mode for keeping symmetric RTP in a session + e78fe72fb69989317d61771b661bded8fac350dc b/f: support compact Supported header (k:) + a03278d09f744008d115ff9379be7139263466c3 b/f: in bye() don't do send_200_ack while iterating over uac_trans + f755fac491982ddeca84e5cab03b64a02e5251a5 introduce timeout for sems-stats management utility + 97f3dcc3eab7806c3ea7aef6655671d9e731357c b/f: xmlrpc2di - detect unsuccessful bind on startup + 7c87e3c238e4be09a8fe0d5246d5a51df5bd52eb Fix unresolved symbol in sbc module when compiled with cmake + 44889f80bb840e90308af40a94d2cae995ff4400 b/f: reset RTP-received timestamp when (re)starting process RTP stream + 5139d4cb19d58643341c46d770f2b08369d162fc b/f: use proper failure return value + 49d90444fec9f6ef64d45122af95d9d5181716a7 b/f: use proper empty string value + 620f03ba84e7526f5a2a82e9be09050d0ebfe96b b/f: click2dial: save content_type, cseq to connect callee + 4e023507b6207ff84dcf30ed1c4d5c4a3f3825b1 add Retry-After: 0 to NOTIFY 500 response on low CSeq + 8dac2df1b8f22acf98d5b16df961edc3582d1969 b/f: fix SBC SDP filter with connection per media only + 32461b9a6ee112e1c557f9eee8a7198c135d2df1 b/f: fixing b6d5f726 (fix SBC SDP filter) + dde27343e5376751ddb544c85f086e0dc95e40f1 b/f: B2BUA: fixed replies for error handling + c49cc6bd175c3b5cc7e2d5688095c5ab8f09c29c b/f: make listRooms return only non-expired rooms + a7516d000029195706c198e5f3373cee16729249 b/f: on RTP timeout, end dialog with sending BYE + bed6c2545a14b62adb746bb08a3d5554e40cded1 b/f: in webconference app, handle session timer timeout and RTP timeout + c096050398a9ada71407a942359d659227dcd521 Drop privileges for SEMS process + ff94051b845fabed3b81b96e96a2d15f11084cb3 Missing include for close(FILE *) + b74432b69f925b1502631b168320cc7f6dc18cbc Fix c/p typo in cmake-files + 13c6e3f26d43edfca3fc16b0f61387e67750552c Add libzrtp support to the CMakeFile + 78126830bfa36f67fb3e7495093fe4f363bd8520 Add systemd-related files to the pkg/rpm dir + 1d86e099d358733e2ef123caef58cdafd67bc78f click2dial: b/f: fix crash when using without credentials + 8c10653865e5f0b446f8783a30b67b062f897dcb b/f: T38 streams in SBC/B2B (udptl transport); proper media direction passthrough + ddb20bd27800c9a9badb02bf0ee44461f7db827b b/f: support values at end of SDP without CR (master 8ec8a910a2) + 427a5a77295ae31b4b8694e330f1eb4c1c661612 b/f: getHeader: find correct hdr also if it's substring of another hdr + ead6c3efbc9920a1120272a144ce776e473b5db3 Add [Install] directive for systemd + e6b3af38395d933ae37c406fef1e326fe059b1fb b/f: AmCondition::wait_for_to nsec overflow + 26fdaa8eaf35e058c735af9ebb8ada38e4267d3c b/f: stopping failed outbound calls + 0ad56907a9844a9632c377715ba38a2c5ebcab6b core: handle exceptions in out-of-dlg messages gracefully + 2aa0bc2a33449a154e643209b4a5415b1b186123 core: name default interface as "default" + 7b5cf590d3298c657540323641d74c9d75de4c93 c/f: make callgen compile using proper IP for From host + a83b8e1e21619ac106d24d8f7a57b2fdaddae027 c/f: make it possible to pass CXX / CC from env vars + 0d66e620efb16bbc387619ccb2d6d285dbf14824 c/f: revert a83b8e1 as it can cause some issues with the linker Version 1.4.2 - auth'ed BYE (wait_for_bye_transaction) - fixes SIP auth for qop header format - xmlrpc: fix busyloop with keep-alive - a few minor SST issues - builds on Ubuntu 11.4 (build-deps) - ivr: release GIL on blocking file I/O - SBC: fix codec filter for unnamed payloads<96 - fixed DSM variables to outgoing call - some examples and documentation added Version 1.4.1 make system: - shortened dev build version - removed py_sems from sems-python-modules packet. docs: - included monitoring mod documentation - clarified use of multiple interface support event dispatcher: - fixed minor memory leak in error case. session management: - fixed several bugs in session creation. sip: - return 481 on CANCEL if the transaction cannot be found. - reply properly with 482 if the UAS dialog already exists. - pass only 200-ACK request to the UA layer. - do not update route or remote_uri on failure reply. - "ACK for non-existing dialog" logged as DEBUG - do not mandate to-tag for anything else but 2xx replies. - do not pass orphan replies to UA (no matching transaction). - improved AmSipDialog::bye() - next_hop core option added. sdp parser: - process properly on short SDP - allow unsupported transport types. B2BUA: - fixed manipulation of short/empty SDP. - treat CANCEL hop-by-hop (not waiting for 200 from other side). - avoid relaying events if the session is stopped. - bind the relay stream to the local RTP IP. RTP relay: - fixed sequence number & SSRC of relayed RTP packets. sbc: - handle correctly onNoAck event. authentication: - adds support for "qop" as described in rfc2617. - resend authenticated request as VERBATIM (fixes dup. Max-Forward & User-Agent HF) xmlrpc2di: - added clean shutdown procedure. - fixed issue related to select() and file descriptors >= 1024 monitoring - monitoring: run garbage collector by default (avoid filling up RAM with monitoring data). g729: - fix mem leak in g729 wrapper. Version 1.4.0 - SBC - topo hiding B2BUA - flexible call profile based configuration - online reload of call profiles - From, To, RURI, Call-ID update - RTP bridging - Header and message filter - codec filter - adding arbitrary headers - reply code translation - SIP authentication - SIP Session Timers - call timer - prepaid accounting - DSM - language: - if / else constructs - functions - for loops - utils: RingTone - mod_groups (call queues, conference interaction etc) - multi homed support (SIP and RTP) - MWI support for voicemail via PUBLISH - XMLRPC bind to specific address - webconference: private/reserved rooms mode - proxy sticky auth - many bug fixes and performance improvements Version 1.3.0 - SIP stack moved into the core (no need to load sipctrl any more) - session app/signaling thread pool support (for very high session count) - reduced memory usage if no RTP is processed - SIP/UDP receive buffer configurable - optimized potentially contentious mutexes - multiple SIP/UDP receivers for even more signaling performance - daemon mode can be compile-time disabled - command line params may overrule config file - CMake build with older versions possible (2.4) - simple mode for voicemail/voicebox, usable without special handling by proxy - RTP DTMF reception fixed (using RTP TS) - support for DTMF sending/relaying on app level - json-rpc (v2.0) module for interfacing (sync+async) - 100rel (PRACK, RFC 3262) support - open webconference rooms at startup - DNS cache, support for load balancing on DNS SRV records - new tutorials, DSM examples - DSM state machine scripting platform - #include scripts - sys.popen to run external programs - proper dialout support with ringing events, variables passed, auth etc. - app selection and call preparation on in-mem DB (monitoring), with fallback - System DSMs - executed DSM scripts unrelated to calls - full conference support, with subgroups (mixed sidebars) - mix in file into call or conference - consistency checks on DSM scripts - sets() for variable replacement - raw SIP message processing - arrays (also recursive) in DI action - utils.add/sub - prefix matching for test - UPDATE support for Session Timer - B2BUA with Session Timer (using UPDATE/re-INVITE with last SDP) - SIP Session Timer for webconference, conference, dsm, ivr - SIGHUP stops active calls, SIGUSR1/2 can be used by apps - G.729 codec module (Intel IPP wrapper) Version 1.2.0 - many DSM improvements: - exceptions support - transitions from multiple origin states - 'not' operator on conditions - B2BUA functionality - register scripts as application - live reload of scripts - script sets with its own configuration - mod_mysql for MySQL DB access - mod_conference module - mod_aws Amazon Web Services module - mod_py Python module - CANCEL handling in early dialogs (generates hangup event) - Events from DI Interface - eval() function for simple expression evaluation (+, -) - ivr: fixed memory leak and crashes that occured with high load - complete working and usable CMake build system - twitter app - monitoring: server monitoring and in-memory AVP store - fixed precoded announcements for all codecs - fixed multiple timers with the same timestamp - mail_header_vars : variables from P-App-Param into voicemail template (SEMS-17) - sipctrl: outbound proxy support and ACK sent from UA layer - stored application and variables from monitoring for new calls - improved RTP DTMF detection using TS - Audio file recording with subtype (e.g. record.wav|A-Law) - PyQT GUI example for webconference - py_sems compiles with newer sip4 versions Version 1.1.0 RC1 (in order) - configurable server timeout for XMLRPC client - DIAMETER client with TLS - SEMS-42: callee domain optionally specified in webconference dialout - SEMS-35: time out empty webconference rooms - support for multi domain through uid/did in voicebox system - early media support for b2b w/ media relay - transparent signaling + media B2BUA application - MT XMLRPC server - ISDN gateway module - controlled server shutdown (de-initialization, stopping of sessions) - improved logging - MT binrpc receiver, connection pool for sending to SER - DSM state machine interpreter: write applications as simple, self-documenting, correct, state machine description charts - g722 codec from spandsp in 8khz compatibility mode - support for out of dialog request handling in modules - audio file autorewind - AmAudio mixing - 488 reply (instead of 606) if no compatible codec found ... plus as always lots of fixes Version 1.0.0 - internal SIP stack (sipctrl) - module to use ser2 as SIP stack (binrpcctrl) - rewritten SDP parser - various options for application selection (configured, special header, RURI regexp, RURI user, RURI parameter) - ZRTP support - XMLRPC client mode - DIAMETER client - new complete mailbox system (msg_storage+voicebox+voicemail+annrecorder) - simple call generator application - early media pre-call announcement application with B2B - B2B call timer application - callback application - prepaid and click2dial applications - precoded annoucements - early media receiving example - support for extra headers in dialout sessions - support for setting the URI of a session in SDP - support for posting events into conferences - support for receiving early media - outbound_proxy option sets next hop on outgoing dialogs and registrations - b/f: don't reuse dialog for SIP authenticated re-sending of INVITE - fixed artifacts on wav files with extra chunks - support for spandsp DTMF detection, packet loss concealment - speex NB, G726, L16 codecs - support for local audio as audio sources into audio engine on the same channel as RTP - selectively exclude codecs - MP3 playback - libsrc resampling enables prompt files in other bitrates - RTP receive buffer optimization - configurable session limit - basic OPTIONS support for alive monitoring through SIP - syslog calls logging, configurable syslog facility - builds for and on solaris, openembedded, openwrt, Darwin, too ... plus as always lots of fixes Version 0.10.0 (final) - new module for exposing internal DI APIs via XMLRPC - new module for triggering calls via DI interface - new DI/XMLRPC controlled conference application, that can for example be used for conference rooms with web interface - CallWatcher and a more powerful dialout function simplifies interfacing to external applications - many examples for quick start of custom service development, for example new serviceline (auto-attendant) application - b2bua implementation with media relay - language awareness of conference application - DB support for conference and voicemail prompts, and announcements - PromptCollection simplifies usage of prompts in applications - b2bua support in py_sems embedded python interpreter - corrected RTP timeout detection - new api for custom logging modules, new in-memory ring buffer logging module - accept all possible payloads and payload switching on the fly (thanks to Maxim Sobolyev/sippysoft) - changing callgroups (media processing threads) in running sessions - support for setting sessions on hold - support for OpenSer 1.3 - substantially improved documentation - 'bundle' install method for easy installation - support for OpenWRT package build ... and many bugfixes Version 0.10.0 rc2 - new Adaptive jitter buffer as alternative playout method Contributed by Andriy Pylypenko/Sippy Software - new PIN collect application with transfer to e.g. separate conference bridge - new SIP registrar client for registration at a SIP registrar - new UAC authentication component - new faster announcement application with memory caching for audio files - new pre call announcement method using REFER - new plug-in py_sems using a Python/C++ binding generator for even more power in python scripts - stats server can be used for monitoring custom modules/applications - session specific parameters by default taken from unified session parameters header - signature configurable - install and make system updated - added documentation - some security bugfixes (namely fixing possible buffer overflows) - ...and a lot of other bug fixes Version 0.10.0 rc1 ... What is new in SEMS version 0.10.0 (from 0.9.0) Between 0.9.0 (CVS) versions and 0.10.0, quite a lot has changed. Almost 50% of the code has been rewritten: the design has been simplified a lot, and to make a slim, clean core a lot of functionality has been dropped. Instead, for the core we just focus on the essentials: basic signalling, session and media handling, and loading plugins. An inter-plugin API ("DI-API") has been introduced, such that functionality can be added using plugins, everybody can implement their favorite functionality as a reusable plug-in, and applications can be built in a modular manner. A new kind of modules, session component plugins, can even modify the basic signaling behaviour, the session timer plugin is the first one to use this. Major additional changes: * Interface to Ser has been rewritten. * Application plug-in interface has been partially rewritten. Applications are now exclusively event driven and asynchronous. * Media is processed by one thread for all sessions, improving the performance extremely due to less task-switching * Back-to-back User Agent (B2BUA) functionality has been added. * IVR python code has been completely rewritten: Applications are now developed in the IVR like their C++ counterparts * Session-Timer has been added (as module), replacing the ICMP watcher * Adaptive playout buffer has been added * Audio processing simplified