eXosip2 (5.2.1) - 2020-05-21 * [ENABLE_MAIN_SOCKET] fix epoll mechanism for server socket with TCP and TLS * [crash] check scheme upon processing 3xx * [ssl] fix to be compatible with libressl * [ssl] https://savannah.nongnu.org/patch/?10046 compatibility with openssl below 1.1.0 * fix when Content-Type indicates application/sdp, but there is no body * [TLS] modify the code for TLS validation in order to improve logs and details on the connection * use time_t instead of int for r_retry_after_delay variable [fix 1367a34ca commited on March 1st] * eXosip_default_action will return OSIP_RETRY_LIMIT when limit is reached * make sure to obey the Retry-After header from REGISTER reply * use newer osip_timersub MACRO * [bug#60024] fix openssl usage to always use callback mode for private key password, even when missing * eXosip_reset_transports was not effective any more since [5.1.2] [commit 705643fa 2020-07-07] [do not use unless you understand it] * [windows] a HANDLE is leaked when loading trusted certificates * dp layer: handle WSAEMSGSIZE when buffer is too short for complete incoming messag * cleaner code to retreive an SDP from a SIP message * fix crash when ENABLE_MAIN_SOCKET is defined and epoll is used eXosip2 (5.2.0) - 2020-11-10 * fix memory and socket leak [major] [affected TCP, TLS, UDP: since 5.1.2, need update asap] * fix to make sure a non yet established TLS descriptor with read descriptor set will be processed when no outgoing transaction is in a state to handle it [since 5.1.2] * fix SRV rotation for TLS [was rotating TCP records instead of TLS] [since 5.1.2] * fix duplicate packets for TCP and TLS when several outgoing NICT are happening at the same time [since 5.1.2] * add outbound proxy parameter in sip_monitor tool * ABI update: modification of "eXosip_tls_ctx_t" extend the structure to set - cipher list - add TLS openssl flags (to disable TLSv1, TLSv1.1, etc...) - add DTLS openssl flags (to disable DTLSv1, etc...) eXosip2 (5.1.3) - 2020-08-25 * EXOSIP_OPT_FORCE_CONNECTIONREUSE; new option to force reusing established socket for ACK and dialog message * tls: fix building DH parameter with 5.1.2 and openssl < 1.1.0 eXosip2 (5.1.2) - 2020-08-20 * tls: use RFC 5114 dh param with 2048 bits size. * tls: use 2048 bits for ephemeral RSA key genearation. * tls: use SSL_OP_NO_COMPRESSION to make sure it's disabled. * tls: use SSL_OP_NO_TICKET to disable ticket. * tls: use HIGH:!COMPLEMENTOFDEFAULT:!kRSA:!PSK:!SRP cipher list for higher security and less ciphers * fix possible race condition in sample code [sip_reg and sip_monitor] * new format style using clang-format. * reduce and rewrite logs for readability. * fix broken epoll implementation. (DO NOT USE 5.1.1 with epoll) * rewrite UDP/TCP/TLS (and DTLS untested) for both select and epoll mode. complete rewrite of socket (c-ares and UDP/TCP/TLS) in order to accelerate socket esablishement, and correctly handle socket failure. The change also help to recover faster after a socket failure and to switch to the next SRV record available. This last feature was previously broken. * Fix NAPTR/SRV on windows when CARES is not used. (not advised) * ACK sent out of transaction with no existing connection may be sent later. (TCP/TLS) * Upon TLS loss, try to use domain or NAPTR SNI when TLS connection is not initiated by an outgoing transaction. * sip_monitor: new tool to monitor sip service * add support for authentication using SHA-256 (openssl required) * only use first supported proposed authentication when same realm is used * fix: upon UDP errors, like ICMP buffer size may reach abnormal values (avoid useless reallocation) eXosip2 (5.1.1) - 2020-01-16 * new API: Generate random string: (low entropy, only hexa) int eXosip_hexa_generate_random(char *val, int val_size); Generate random string: (high entropy when compiled with openssl) int eXosip_byte_generate_random(char *val, int val_size) * provide more entropy with eXosip_byte_generate_random (with openssl when available). * fix TLS security issue reported by Alexander Traud regarding hostname validation when using NAPTR/SRV. * add support for epoll (detected by configured) // becomes the default on linux platforms with autotools * fix bug #56839: The cnonce should not be static -this is identified as replay attack by some services-. * fix tcp and tls connection failure detection (accelerate error detection and recovery) * fix: fixed a crash with DTLS eXosip2 (5.1.0) - 2019-03-27 * minor API update: API parameter change: eXosip_call_build_ack/eXosip_call_send_ack API to use tid instead of did as parameter. * new API: add an API to insert one extra header in BYE: int eXosip_call_terminate_with_header(struct eXosip_t *excontext, int cid, int did, const char *header_name, const char *header_value); void eXosip_dnsutils_release(struct osip_naptr *naptr_record); required after usage of eXosip_dnsutils_naptr. * new OPTION: EXOSIP_OPT_SET_SESSIONTIMERS_FORCE option to force session timer to be used when remote side does not support it. * structure change: new param in eXosip_tls_credentials_t for pinning: "public_key_pinned". A file with the expected public key of server. If you use eXosip_tls_ctx_t/eXosip_tls_credentials_t/EXOSIP_OPT_SET_TLS_CERTIFICATES_INFO, you need to recompile. * fix processing response out of transaction. (avoid incorrect logs and extra work) * fix https://savannah.nongnu.org/bugs/?54628 where ACK was only retransmitted for initial outgoing INVITE. fix: retransmit ACK for both initial INVITE and re-INVITE. fix: retransmit ACK for 2xx from forking (with a BYE) even if call does not exist. ACK for "old transaction" within the established dialog won't be retransmitted because the parameter only hold the latest ACK. * fix bug report: https://savannah.nongnu.org/bugs/index.php?54624 another patch to fix more issue related to cseq & PRACK. The newer code better handle forking use-case with PRACK. The newer code better handle several 1xx from same user. * fix bug report: https://savannah.nongnu.org/bugs/index.php?54624 cseq wasn't increasing after a PRACK. * improve portability code, detection of headers, windows compilation detection, sockaddr_storage was not correctly defined. * fix udp layer: set ipbuf before using it. * fix: allow socket descriptor to be 0 (posix requirement). * fix: compile with any openssl version. * allow compilation with OPENSSL_NO_DH, OPENSSL_NO_RSA, OPENSSL_NO_ECDH and/or OPENSSL_NO_DEPRECATED. * remove old windows specific RSA obsolete code. * add in eXtl_tls.c some explanations on usage of TLS with eXosip2. READ THEM. * improve reliability for naptr/srv lookup (but still a short time). * fix/improve _eXosip_mark_registration_expired: it was working correctly only if registration had previously failed. * fix: attach call/dialog to CANCEL transaction (so EXOSIP_CALL_MESSAGE_ANSWERED will be received instead of EXOSIP_MESSAGE_ANSWERED). * windows: fix DnsQuery to use UTF8 even if compiled without UNICODE (not applicable if you use c-ares). * windows: add ENUM capability and improve NAPTR/SRV record (not applicable if you use c-ares). * windows: you should use c-ares AND you should compile with UNICODE. (much better). * add ability to define a dnsserver when doing NAPTR and SRV record (c-ares only). * format of domain string for "eXosip_dnsutils_naptr" is "domain.com!+AUS|IP_DNSSERVER". * fix for on android, DNS are not available any more (restricted access) (c-ares only). * add support ENUM and regex for res_query API (not applicable if you use c-ares). * sync with newer osip: use newer osip_naptr & osip_srv_record structures to hold ENUM sip result and improvements to retreive (and release) it via eXosip_dnsutils_naptr and eXosip_dnsutils_release APIs. * TLS improvments: simplify client and server config, add ECDH cipher suite if missing, password for private key is optional, add support for public key pinning. * improve to report EXOSIP_CALL_NOANSWER upon transport error for INVITE for faster detection. * fix possible memory leak for X509 server certificate. * fix crash if dialog has been already closed between 200ok and a received BYE. * improve windows pipe replacement (use a free allocated port automatically). * fix to optimize detection of TCP or TLS establishement, fix to optimize sending REGISTER after establishement. * patch for call transfer to keep dialog after BYE, in order to be able to handle incoming/outgoing NOTIFY within calls after BYE. * handle incoming UPDATE from alternative dialogs in early dialog mode. * fix to reject any NOTIFY without established dialog coming later than 64 seconds after initial SUBSCRIBE. * After a NAPTR query, some DNS server returns SUCCESS without NAPTR answers. In such use-case, fallback to manual SRV records. * add SOCK_CLOEXEC option to sockets // add missing SO_KEEPALIVE options on TLS socket. * EXOSIP_OPT_ENABLE_IPV6 now support 0(ipv4 only), 1(ipv6 only) and 2(ipv4 OR ipv6). With option 2, choice is made based on DNS and the stack can fallback between IPv4 and IPv6. * fix possible memory leak when using wrong tid for eXosip_insubscription_send_answer. * fix possible memory leak upon allocation error. * fix leak upon syntax error in parameters provided for PUBLISH. * fix leak upon syntax error in parameters provided for REGISTER. * increase size of proto_ifs for IPv6 local address. * RFC 2617 erratum: Errata ID: 1649 (minor issue). * _exosip_isipv4addr: fix checking IPv4 address (minor issue). * other minor updates. eXosip2 (5.0.0) * major API update: add a new parameter to eXosip_call_build_prack in order to create the PRACK for this specific response and not for the latest. * major API update: removal of eX_refer.h API. REFER are now handled with subscriptions APIs. eXosip_refer_build_request removed eXosip_refer_send_request removed * major API update: subscription now handle both SUBSCRIBE and REFER with the same APIs: eXosip_subscription_build_initial_refer ADDED eXosip_subscribe_build_initial_request renamed eXosip_subscription_build_initial_subscribe eXosip_subscribe_send_initial_request renamed eXosip_subscription_send_initial_request eXosip_subscribe_build_refresh_request renamed eXosip_subscription_build_refresh_request eXosip_subscribe_send_refresh_request renamed eXosip_subscription_send_refresh_request eXosip_subscribe_remove renamed eXosip_subscription_remove EXOSIP_IN_SUBSCRIPTION_* and EXOSIP_SUBSCRIPTION_* events may now relate to REFER subscription. * major API change: eXosip_automatic_refresh is obsolete and has been removed. only use eXosip_automatic_action instead * API update: eXosip_options_send_request returns a positive transaction id (tid) on success. eXosip_publish returns a positive transaction id (tid) on success. note: eXosip_message_send_request was already returing the transaction id (tid) on success. * new API options: EXOSIP_OPT_REMOVE_PREROUTESET: to keep Route Set EXOSIP_OPT_SET_SIP_INSTANCE: define +sip.instance parameter in Contact headers EXOSIP_OPT_ENABLE_USE_EPHEMERAL_PORT: option to use/not use ephemeral port in Contact. EXOSIP_OPT_ENABLE_REUSE_TCP_PORT: option to reuse port. EXOSIP_OPT_AUTO_MASQUERADE_CONTACT: option to enable automatic masquerading for Contact headers. EXOSIP_OPT_UDP_LEARN_PORT: obsolete and will be removed in the future. EXOSIP_OPT_SET_DEFAULT_CONTACT_DISPLAYNAME: define a display name to be added in Contact headers * new API options: (high load traffic use-case: DO NOT USE FOR COMMON USAGE) EXOSIP_OPT_SET_MAX_MESSAGE_TO_READ: set the number of message to read at once for each network processing. EXOSIP_OPT_SET_MAX_READ_TIMEOUT: set the period in nano seconds during we read for sip message. EXOSIP_OPT_GET_STATISTICS: retreive numerous statistics. * rewrite/update autotools and ./configure options --enable-pthread=[autodetect|force] autodetect POSIX threads or force -DHAVE_PTHREAD [default=autodetect] --enable-semaphore=[autodetect|semaphore|sysv] select your prefered semaphore [default=autodetect]. * fix selection of Contact header for 3xx (default to a tel/sip/sips one with any transport) * keep to call context enough time to handle redirection. * fix race condition for processing SRV results (not likely to happen) * fix bug when reading sip message longuer than 8000 over UDP and TLS. * improve eXosip_add_authentication_info to avoid duplicate credentials * if a SUBSCRIBE is rejected, the context will be released automatically * add failover after a DNS failure. * fallback to SRV even if we receive a NOTFOUND reply for NAPTR. * fix route set with strict router. * rename usage of -DHAVE_CARES_H into -DHAVE_ARES_H real name of header. * remove warnings mainly related to socket API (getnameinfo/bind/accept/recv/connect/sendto) * rewrite all loop using iterator to improve performance (useful for high load traffic) * rewrite Via and Contact management: both will now contains the IP of the real network interface instead of the default one. * improve NAPTR failover, more reliable // add failover for 503 answer * improve interval to force REGISTER refresh upon network error and failover. * improve TCP socket management * add a callback to simplify/optimize/accelerate usage of wakelocks in android application using exosip2. * improve TLS, add TLSv1.1, TLSv1.2, disable weak cipher (FREAK) and enable ECDHE cipher. * add support for SNI tls extension (openssl 1.0.2) * add try/except on windows to catch possible missing qwave (windows server) * implement a timeout (32 seconds) for establishing a TCP and TLS connection. * if a connection is failing, report the failure asap. * fix memory leak in eXosip_call_get_referto * remove extra connect on socket for TCP and TLS (not allowed for tcp stream) * fix to correctly discard INVITE retransmission with same branch received after original INVITE was replied * add WSACleanup for each WSAStartup call (windows) * do not include contact in BYE and CANCEL * fix to use sips when appropriate (in Contact) * fix to avoid handling negative content-length * do not start naptr for incoming transactions. * fix bug when rseq is empty but exist * add support for QOS on windows. * improve connection handling/failure detection, keep alive options, in TLS, TCP, UDP. * update static IDs (cid/did/rid/pid) to use range from 0 to INT_MAX to avoid possible collision * other minor updates. eXosip2 (4.1.0) * improve timer and use UPDATE if advertised, INVITE otherwise. * improve PRACK support. * option to disable automatic BYE answer. * option to enable/disable IPv6 per eXosip_t instance. * option to disable DNS cache. * improve network support for several eXosip_t instance. keepalive setting is per instance. ipv4/ipv6 setting is per instance. improve network setting to avoid conflict upon transport change. * fix tcp and tls connect() for slow connection. * use TCP_NODELAY on more platform. * use Authorization header for 401 // simplify authentication code. * minor expires for REGISTER improvments. * copy call-info over SUBSCRIBE refresh. * allow more TLS error if verification is disabled. * fix if NO NAPTR is availble. * add support for Windows Phone 8. * fix to use cache for TCP and TLS. * fix possible leaks on implementation errors. * add TSC experimental support. eXosip2 (4.0.0) * modify configuration APIs to use eXosip_set_option * fix bug: do not create new PRACK if it already exist for an answer. * update to latest osip // test time compensation for android. * use ephemaral port in standard TCP and TLS version. * return tid number so that we can match the response event. * use system independant time for osip_gettimeofday on unix platform. * major API update: several "struct eXosip_t" can be handled at the same time. This can be used to have several transport layer running at the same time. * many tiny other change. eXosip2 (3.6.0) * use optionnal c-ares DNS library for non blocking DNS access as well as improvments over DNS operation such as NAPTR and SRV records. * again, so many minor change/fix/improvments, sorry for not being able to have an history here... The git on savannah will bring you all details! eXosip2 (3.5.0) * iphone with TCP/TLS background support. * android support. * a lot of minor change/fix/improvments, sorry for not being able to have an history here... eXosip2 (3.4.0) * modification to allow using "windows certificate store" for TLS. * handle keep alive for TCP/TLS. * fix when receiving additionnal CRLF on reliable transport. * modification to allow non-blocking socket for reliable transport. (TLS/TCP) * fix tag issue with application where tag is missing. * fix compilation for mingw * fix Contact header in request within dialog for non-udp protocol. * fix some DNS issue with vista? * remove 481 auto answer for unsolicited NOTIFY. * fix static id range. * initial code for TCP fragmentation. * osip_list prototypes and warnings fix * fix transport matching for redirection using other transport than udp eXosip2 (3.3.0) * Fix when 200ok include a contact with an empty line parameter. * Fix for replaces header longuer than 256 char. * Fix SRV record with more than 10 answers. * Sort SRV record. * Option to disable NAPTR requests. eXosip2 (3.2.0) * Improve TLS support and add an API for ssl information & files. * return new error code for all API. * remove automatic answers to PRACK. (must be done in application now) * remove automatically outgoing non established susbscriptions. eXosip2 (3.1.0) * AKA authentication. * improve compliance & flexibility. eXosip2 (3.0.4) * fix building SUBSCRIBE refresh. * fix compliance issue with refer-to to-tag/from-tag parameters. * fix bug for retransmissions or ACK with proxy that resolve to several IP. * handle the "expires" parameter to update registration interval. * handle the "expires" parameter to update publication interval. * handle automatically publish refresh, and some error codes (423). eXosip2 (3.0.3) * Add TLS support. * rewrite transport layer. * add line= parameter in Contact headers for registrations. * a few changes related to interop. issues. * add missing *_REQUESTFAILURE events on no answer. * Update registration interval when Expires header is in 200ok. eXosip2 (3.0.2) * fix call transfer issue with "Replaces" header. * allow build/run eXosip in non-threaded model (without -DOSIP_MT). * initial support for ucos. * add support for qop authentication. * remove registration context immediatly upon eXosip_register_remove. * TCP: fix missing Contact in INVITE sent. * TCP: fix missing "transport" in Contact for answers within dialog. * TCP: fix possible race conditions. eXosip2 (3.0.1) * add Windows CE support with Visual Studio 2005 (WM5.0,PocketPC 2003/2005, Smartphone) * Update to osip2-3.0.1 * Add SRV record capabilities. * add new OPTIONS: do not send 101, remove pre-route set from message. eXosip2 (2.2.3) * announce NOTIFY answers to application. * fix authentication bugs from previous patch. * fix TCP bug * fix using code 699 eXosip2 (2.2.2) * new version synchronized with osip2 * total rewrite of eXosip. * -> new API for more flexibility * -> media negotiation must now be handled outside of eXosip2 eXosip (0.9.1) * add publish support through a nice API. eXosip (0.9.0) * improve presence support (busy, away, onthephone...). * new eXosip_automatic_refresh() to refresh SUBSCRIBE and REGISTER. * Fix dialog establishement when receiving NOTIFYs. * This ChangeLog has not been updated seriously... Many changes * have been done but they don't appear here. Sorry. * status of libexosip: * call transfer : OK * redirection of calls (3XX) : OK * SUB/NOTIFY for presence : nearly OK (usable) * authenthication (REGISTER and INVITE only) : ok eXosip (0.8.0) * fix processing of 180 Ringing? * fix bug when BYE is processed before a 2xx for INVITE. eXosip (0.7.7) * memory leaks. * tiny bugs, code clean-up. eXosip (0.7.6) * fix bug when 1st proxy is using strict routing. * support for IPv4 and IPv6. * do not send 180 Ringing any more on new INVITEs. * close correctly rtp streams in josua. * improve the eXosip_event_wait method. * performance updated on win32 for event handling. eXosip (0.7.5) * small improvements for josua. * patch for IPv6 (uncomplete) * patch for authentication * improve configure.in file * allow fancy reason phrase in SIP answer. * allow to NAT traversal (firewall IP in SDP packet). eXosip (0.7.3) * warning fix. * support for multiple registrations. * support for authentifications for REGISTER. eXosip (0.7.2) * add RTP support with common ucl library. * fix some memory leak. * improve facility to change the local_sdp_port. * add an event when ACK for 2xx is received. eXosip (0.7.1) * rewrite of header files and new directory architecture. * support for INFO and OPTIONS within calls. * support for AUDIO. eXosip (0.6.3) * use of event oriented interface in josua. eXosip (0.6.2) * New Event oriented interface with applications. * support for both MSN or compliant UAs. * SUBSCRIBE/NOTIFY for SIMPLE support. * script for adding/updating subscribers. (eXosip_addsubscriber.sh) eXosip (0.6.1) * INVITE, CANCEL, BYE, REGISTER, MESSAGE, REFER * script for adding/updating contact. (eXosip_addfreind.sh) * script for adding/updating identity. (eXosip_addidentity.sh) * NCURSES interface. * options for current session.