* blst_set_ignore(mask): ​ set the events in mask in the per per message blacklist ignore mask for a request (see dst_blacklist_udp_imask for possible values). The basic operation is: msg_blst_ignore_mask|=mask.

+

* blst_clear_ignore(mask):​ like blst_set_ignore(mask),​ but instead of setting some events, it clears them (msg_blst_ignore_mask&​=~mask).

+

* blst_rpl_set_ignore(mask):​ like blst_set_ignore(mask),​ but sets the mask for possible local replies to the current message.

+

* blst_rpl_clear_ignore(mask):​ like blst_rpl_ignore(mask),​ but clears instead of setting.

* removed handshake_timeout and send_timeout module parameters / config variables. The values from tcp are used instead (tcp_connect_timeout and tcp_send_timeout).

+

* runtime config support

+

* more config options:

+

* crl - certificate revocation list file path (PEM format).

+

* send_close_notify - enables/​disables sending close notify alerts prior to closing the corresponding TCP connection. Sending the close notify prior to tcp shutdown is "​nicer"​ from a TLS point of view, but it has a measurable performance impact. Default: off. Can be set at runtime (tls.send_close_notify).

+

* con_ct_wq_max - per connection tls maximum clear text write queue size. The TLS clear-text write queues are used when a send attempt has to be delayed due to an on-going TLS level renegotiation. Can be set at runtime (tls.con_ct_wq_max). Default: 65536 (64 Kb).

+

* ct_wq_max - maximum total for all the tls clear text write queues (summed). Can be set at runtime (tls.ct_wq_max). Default: 10485760 (10 Mb).

* compression is now disabled by default. To enable it set tls_disable_compression to 0, but note that memory usage will increase dramatically especially for large number of connections (>1000).

+

+

==== tm ====

+

+

* t_reply() can be used in main and tm onreply_route to change reply status code and reason

+

* Function next_contacts() is not anymore setting any timers. ​ Check if contact_avp has any values left and call t_set_fr() accordingly before calling t_relay().

+

* Removed unused fr_timer_next module parameter.

+

* reason header support (RFC3326) both for CANCELs generated due to a received final reply and for hop by hop CANCELs generated because of a received CANCEL.

+

* reason header added for a CANCEL generated after a 200 reply was eceived on one of the branches "​Reason:​ SIP;​cause=200"​.

+

* reason header support can be turned on/off using either tm module parameters or in the end to end CANCEL case also on a per transaction basis, using a script function:

+

* local_cancel_reason = 0 | 1 (default 1/on) - turns on adding reason headers for CANCELs generated due to a final reply. Can be changed at runtime.

+

* e2e_cancel_reason = 0 | 1 (default 1/on) - turns on copying reason headers from a received end to end CANCEL (the generated hop by hop CANCELs will have the same reason headers as the received CANCEL). Can be changed at runtime.

* a new module exports version allow the modules functions to take expressions as parameters

+

* many module functions automatically support now expressions or variables in function parameters. This applies to all the module functions declared without a fixup, with a fixup and the corresponding free_fixup function or with a compatible ser or kamailio style standard fixup (declared in sr_module.h or mod_fix.h).

+

<code c>

+

f($a, "b = " + $b); t_set_fr($v + 2 + $x).

+

​t_set_fr($foo) (equivalent now with t_set_fr("​$foo"​)).

+

</​code>​

+

* all the module functions can now be called with any constant expression as parameters

* to work udp4_raw must be enabled or set into auto mode in cfg and server must be started as root or with CAP_NET_RAW

+

* note that even if udp4_raw is off (default), if server was started with enough privileges, it can be enabled at runtime.

+

* the support for using raw sockets is also available on FreeBSD (compiled by default but not tested for performance yet), NetBSD, OpenBSD and Darwin (not tested and not compiled by default, it needs make cfg extra_defs=-DUSE_RAW_SOCKS)

+

* to check if the support is compiled, use sercmd core.udp4_raw_info.

+

+

==== Extended config pre-processor directives ====

+

+

* you can define values for IDs

+

+

<code c>

+

#!define MYINT 123

+

#!define MYSTR "​xyz"​

+

</​code>​

+

+

* defined IDs are replaced at startup, during config parsing, e.g.,:

+

+

<code c>

+

$var(x) = 100 + MYINT;

+

</​code>​

+

+

* is interpreted as:

+

+

<code c>

+

$var(x) = 100 + 123;

+

</​code>​

+

+

* you can have multi-line defined IDs

+

+

<code c>

+

#!define IDLOOP $var(i) = 0; \

+

while($var(i)<​5) { \

+

xlog("​++++ $var(i)\n"​);​ \

+

$var(i) = $var(i) + 1; \

+

}

+

</​code>​

+

+

* then in routing block

+

+

<code c>

+

route {

+

...

+

IDLOOP

+

...

+

}

+

</​code>​

+

+

* new preprocessor directive

+

+

<code c>

+

#!subst "/​regexp/​subst/"​

+

</​code>​

+

+

* perform substitutions inside the strings of config (note that define is replacing only IDs - alphanumeric tokens not enclosed in quotes)

+

+

* #!subst offers an easy way to search and replace inside strings before cfg parsing. E.g.,:

* multilines defines are reduced to single line, so line counter should be fine

+

* column counter goes inside the define value, but you have to omit the '​\'​ and CR for the accurate inside-define position ​

+

+

==== Command Line Parameters ====

+

+

* new option -A to set defined values from command line (e.g., -A WITH_TLS -A MYVALUE=1)

+

* new option -a to control auto-aliases (e.g., -a no/yes)

+

+

===== New Core Parameters =====

+

+

* dst_blacklist_udp_imask - global blacklist events ignore mask for udp (a blacklist event/​reason set in this variable will be ignored when deciding whether or not to blacklist an udp destination). Can be set at runtime. Default: 0 (no blacklist reason is ignored).

+

<code c>

+

Possible values: ​ 0 -disabled, 2 - send error; 4 - connect error,

+

8 - icmp (reserverd),​ 16 - transaction timeout,

+

32 - 503 received, 64 - administratively prohibited

+

​(manually set).

+

</​code>​

+

* dst_blacklist_tcp_imask - like dst_blacklist_udp_imask,​ but for tcp.

+

* dst_blacklist_tls_imask - like dst_blacklist_tls_imask,​ but for tls.