Changelog for SEMS 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