NEWS 78 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459
  1. Release notes for Kamailio/SIP Router (sr)
  2. ***********************************************
  3. Starting with release 3.2, release notes have
  4. been posted to the Kamailio website. Release
  5. notes for previous versions are posted below.
  6. For releases after 3.1, please visit:
  7. http://www.kamailio.org/wiki/features/new-in-4.4.x
  8. http://www.kamailio.org/wiki/features/new-in-4.3.x
  9. http://www.kamailio.org/wiki/features/new-in-4.2.x
  10. http://www.kamailio.org/wiki/features/new-in-4.1.x
  11. http://www.kamailio.org/wiki/features/new-in-4.0.x
  12. http://www.kamailio.org/wiki/features/new-in-3.3.x
  13. http://www.kamailio.org/wiki/features/new-in-3.2.x
  14. Earlier verisons are listed below.
  15. ===================================================
  16. sip-router 3.1 changes
  17. core:
  18. - Dragonfly BSD support
  19. - statistics / counters support for tcp and sctp (enable by default)
  20. - statistics / counters api
  21. - networks addresses support in ip comparisons (src_ip, dst_ip, to_ip)
  22. with strings or rvalue expressions.
  23. E.g.: $ip=10.0.0.0; if (src_ip == $ip +"/8") ....
  24. - lots of module functions automatically support now expressions or
  25. variables in function parameters. This applies to all the module
  26. functions declared without a fixup, with a fixup and the corresponding
  27. free_fixup function or with a compatible ser or kamailio style standard
  28. fixup (declared in sr_module.h or mod_fix.h).
  29. E.g.: f($a, "b = " + $b); t_set_fr($v + 2 + $x).
  30. t_set_fr($foo) (equivalent now with t_set_fr("$foo")).
  31. - all the module functions can now be called with any constant expression
  32. as parameters. E.g.: f("7 *" +" 6 = " + 7 * 6);
  33. - major performance increase on Linux multi-cpu machines that send a lot
  34. of UDP IPv4 packets (40-50% faster in stateless mode). For it to work
  35. udp4_raw must be enabled or set into auto mode in sr.cfg and sr must be
  36. started as root or with CAP_NET_RAW. Note that even if udp4_raw is
  37. off (default), if sr was started with enough privileges, it can be
  38. enabled at runtime.
  39. The support for using raw sockets is also available on FreeBSD (compiled
  40. by default but not tested for performance yet), NetBSD, OpenBSD and
  41. Darwin (not tested and not compiled by default, needs
  42. make cfg extra_defs=-DUSE_RAW_SOCKS). To check if the support is
  43. compiled, use ser -V |grep --color RAW_SOCKS or for a running
  44. ser: sercmd core.udp4_raw_info.
  45. See udp4_raw, udp4_raw_mtu and udp4_raw_ttl below.
  46. - asynchronous TLS support
  47. - onreply_route {...} is now equivalent with onreply_route[0] {...}
  48. - global, per protocol blacklist ignore masks (via extended send_flags).
  49. See dst_blacklist_udp_imask a.s.o (dst_blacklist_*_imask).
  50. - per message blacklist ignore masks
  51. - route() now supports rvalue expressions (e.g. route("test"+$i))
  52. - support for permanent entries in the DNS cache.
  53. new config variables:
  54. - udp4_raw - enables raw socket support for sending UDP IPv4 datagrams
  55. (40-50% performance increase on linux multi-cpu).
  56. Possible values: 0 - disabled (default), 1 - enabled, -1 auto.
  57. In "auto" mode it will be enabled if possible (sr started as root or
  58. with CAP_NET_RAW).
  59. udp4_raw can be used on Linux and FreeBSD. For other BSDs and Darwin
  60. one must compile with -DUSE_RAW_SOCKS.
  61. On Linux one should also set udp4_raw_mtu if the MTU on any network
  62. interface that could be used for sending is smaller then 1500.
  63. Can be set at runtime as long as sr was started with enough privileges
  64. (core.udp4_raw).
  65. - udp4_raw_mtu - MTU value used for UDP IPv4 packets when udp4_raw is
  66. enabled. It should be set to the minimum MTU of all the network
  67. interfaces that could be used for sending. The default value is 1500.
  68. Note that on BSDs it does not need to be set (if set it will be ignored,
  69. the proper MTU will be used automatically by the kernel). On Linux it
  70. should be set.
  71. Can be set at runtime (core.udp4_raw_mtu).
  72. - udp4_raw_ttl - TTL value used for UDP IPv4 packets when udp4_raw is
  73. enabled. By default it is set to auto mode (-1), meaning that the
  74. same TTL will be used as for normal UDP sockets.
  75. Can be set at runtime (core.udp4_raw_ttl).
  76. - dst_blacklist_udp_imask - global blacklist events ignore mask for udp
  77. (a blacklist event/reason set in this variable will be ignored when
  78. deciding whether or not to blacklist an udp destination). Can be set
  79. at runtime. Default: 0 (no blacklist reason is ignored).
  80. Possible values: 0 -disabled, 2 - send error; 4 - connect error,
  81. 8 - icmp (reserverd), 16 - transaction timeout,
  82. 32 - 503 received, 64 - administratively prohibited
  83. (manually set).
  84. - dst_blacklist_tcp_imask - like dst_blacklist_udp_imask, but for tcp.
  85. - dst_blacklist_tls_imask - like dst_blacklist_tls_imask, but for tcp.
  86. - dst_blacklist_sctp_imask -like dst_blacklist_sctp_imask, but for tcp.
  87. - dns_cache_rec_pref - DNS cache record preference:
  88. 0 - do not check duplicates (default)
  89. 1 - prefer old records
  90. 2 - prefer new records
  91. 3 - prefer records with longer lifetime
  92. modules:
  93. - counters: functions and RPCs for manipulating counters (statistics):
  94. modparam("counters", "script_counter", name)
  95. cnt_inc(name)
  96. cnt_add(name, val)
  97. cnt_reset(name)
  98. - blst: functions for ignoring blacklist events per message:
  99. blst_set_ignore(mask): set the events in mask in the per
  100. per message blacklist ignore mask for a request
  101. (see dst_blacklist_udp_imask for possible values).
  102. The basic operation is: msg_blst_ignore_mask|=mask.
  103. blst_clear_ignore(mask): like blst_set_ignore(mask), but instead
  104. of setting some events, it clears them
  105. (msg_blst_ignore_mask&=~mask).
  106. blst_rpl_set_ignore(mask): like blst_set_ignore(mask), but sets
  107. the mask for possible local replies to the current message.
  108. blst_rpl_clear_ignore(mask): like blst_rpl_ignore(mask), but
  109. clears instead of setting.
  110. - tls:
  111. certificate revocation list (CRL) support.
  112. asynchronous TLS support
  113. new TLS RPCs (tls.info, tls.options), tls.list more detailed.
  114. removed handshake_timeout and send_timeout module parameters /
  115. config variables. The values from tcp are used instead
  116. (tcp_connect_timeout and tcp_send_timeout).
  117. runtime config support
  118. more config options:
  119. crl - certificate revocation list file path (PEM format).
  120. send_close_notify - enables/disables sending close notify
  121. alerts prior to closing the corresponding TCP connection.
  122. Sending the close notify prior to tcp shutdown is "nicer"
  123. from a TLS point of view, but it has a measurable
  124. performance impact. Default: off. Can be set at runtime
  125. (tls.send_close_notify).
  126. con_ct_wq_max - per connection tls maximum clear text write
  127. queue size. The TLS clear-text write queues are used when a
  128. send attempt has to be delayed due to an on-going TLS level
  129. renegotiation. Can be set at runtime (tls.con_ct_wq_max).
  130. Default: 65536 (64 Kb).
  131. ct_wq_max - maximum total for all the tls clear text write
  132. queues (summed). Can be set at runtime (tls.ct_wq_max).
  133. Default: 10485760 (10 Mb).
  134. ct_wq_blk_size - internal TLS pre-write (clear-text) queue
  135. minimum block size (advance tunning or debugging).
  136. Can be set at runtime (tls.ct_wq_blk_size).
  137. Default: 4096 (4 Kb).
  138. verbose debug messages can be enable by re-compiling with
  139. -DTLS_RD_DEBUG (for the read path) and -DTLS_WR_DEBUG
  140. (for the write path).
  141. new options for better tuning memory usage for modern openssl
  142. versions: ssl_release_buffers (default 1), ssl_freelist_max_len
  143. (default 0), ssl_max_send_fragment, ssl_read_ahead (default 0).
  144. For more info see modules/doc/tls/README.
  145. compression is now disabled by default. To enable it set
  146. tls_disable_compression to 0, but note that memory usage will
  147. increase dramatically especially for large number of
  148. connections (>1000).
  149. tm:
  150. - reason header support (RFC3326) both for CANCELs generated due to a
  151. received final reply and for hop by hop CANCELs generated because of a
  152. received CANCEL.
  153. E.g.: reason header added for a CANCEL generated after a 200 reply was
  154. received on one of the branches "Reason: SIP;cause=200".
  155. The reason header support can be turned on/off using either tm
  156. module parameters or in the end to end CANCEL case also on a per
  157. transaction basis, using a script function:
  158. local_cancel_reason = 0 | 1 (default 1/on) - turns on adding reason
  159. headers for CANCELs generated due to a final reply. Can be changed
  160. at runtime.
  161. e2e_cancel_reason = 0 | 1 (default 1/on) - turns on copying reason
  162. headers from a received end to end CANCEL (the generated hop by hop
  163. CANCELs will have the same reason headers as the received CANCEL).
  164. Can be changed at runtime.
  165. t_set_no_e2e_cancel_reason(0|1) - enable/disable cancel reason
  166. header copying on a per transaction basis (0 - enable, 1 disable).
  167. - t_reply() can be used both from the main/core onreply_route{} and tm
  168. onreply_route[...]{}s.
  169. sip-router 3.0 changes
  170. core:
  171. - type casts operators: (int), (str).
  172. - new operators eq, ne for string compares and ieq, ine for interger
  173. compares. The names are not yet final (use them at your own risk).
  174. Future version might use ==/!= only for ints (ieq/ine) and eq/ne for
  175. strings (under debate).
  176. They are almost equivalent to == or !=, but they force the conversion
  177. of their operands (eq to string and ieq to int), allowing among other
  178. things better type checking on startup and more optimizations.
  179. Non equiv. examples: 0 == "" (true) is not equivalent to 0 eq ""
  180. (false: it evaluates to "0" eq ""). "a" ieq "b" (true: (int)"a" is 0
  181. and (int)"b" is 0) is not equivalent to "a" == "b" (false).
  182. Note: internally == and != are converted on startup to eq/ne/ieq/ine
  183. whenever possible (both operand types can be safely determined at
  184. start time and they are the same).
  185. - try to guess what the user wanted when operators that support multiple
  186. types are used on different typed operands. In general convert the
  187. the right operand to the type of the left operand and then perform the
  188. operation. Exception: the left operand is undef.
  189. This applies to the following operators: +, == and !=.
  190. Special case: undef as left operand:
  191. For +: undef + expr -> undef is converted to string => "" + expr.
  192. For == and !=: undef == expr -> undef is converted to type_of expr.
  193. If expr is undef, then undef == undef is true (internally is converted
  194. to string).
  195. - expression evaluation changes: auto-convert to interger or string
  196. in function of the operators:
  197. int(undef)==0, int("")==0, int("123")==123, int("abc")==0
  198. str(undef)=="", str(123)=="123".
  199. - new script operators: defined, strlen, strempty
  200. defined expr - returns true if expr is defined, and false if not.
  201. Note: only a standalone avp or pvar can be
  202. undefined, everything else is defined.
  203. strlen(expr) - returns the lenght of expr evaluated as string.
  204. strempty(expr) - returns true if expr evaluates to the empty
  205. string (equivalent to expr=="").
  206. e.g.: if (defined $v && !strempty($v)) $len=strlen($v);
  207. - msg:len max_len comparison obsoleted and removed (it did not make any
  208. sense, msg:len > max_len was always false, use something like
  209. 4096 or 16384 in its place).
  210. - module search path support: loadpath takes now a list of directories
  211. separated by ':'. The list is searched in-order. For each directory d
  212. $d/${module_name}.so and $d/${module_name}/${module_name}.so are tried.
  213. - dns TXT, EBL and PTR support (both cache and non-cached resolver)
  214. - support for dual module interfaces: ser and kamailio
  215. config script changes:
  216. - script mode can be switched between ser compatible, kamailio compatible
  217. and max compatibility (compatible with both as much as possible), using
  218. #!SER
  219. #!KAMAILIO
  220. #!OPENSER
  221. #!ALL
  222. #!MAXCOMPAT
  223. where #!KAMAILIO is equivalent with #!OPENSER and #!ALL with #!MAXCOMPAT
  224. - support for kamailio style pvars
  225. - C-like switch()/case (integer only)
  226. - while()
  227. - include file support: include_file "somefile"
  228. - event route support: event_route[module_name:eventid]
  229. - user and shm_force_alloc must now appear prior to any modparam() or route
  230. block.
  231. - per message send_flags support (see set_forward_no_connect(),
  232. set_forward_reply_no_connect(), set_forward_close() & set_reply_close())
  233. build system:
  234. - multiple modules directories are now supported (defined in Makefile.dirs)
  235. new config variables:
  236. - max_while_loops - maximum iterations allowed for a while (can be changed
  237. at runtime). Default 100.
  238. - log_name - set the application name used when printing to syslog.
  239. - mem_summary - memory debugging info logged on exit or on SIGUSR1.
  240. The value is a combination of flags: 0 - off,
  241. 1 - dump all used memory blocks and some statistics (lots of output),
  242. 2 - dump a summary of the used memory blocks (works only if
  243. compiled with DBG_QM_MALLOC or DBG_F_MALLOC).
  244. Default: 1.
  245. Can be changed at runtime.
  246. - shm = number or shm_mem = number - size of shared memory in MB. It's
  247. overwritten if a value is specified on the command line (-m val).
  248. Default: 32 Mb. Must appear prior to any modparam() or route block.
  249. new script commands:
  250. add_local_rport() - adds the rport parameter to the added via header
  251. (rfc3581).
  252. set_forward_no_connect() - the message will be forwarded only if there is
  253. already an existing connection to the destination (it applies only to
  254. connection oriented protocols like tcp, tls and in the future sctp).
  255. set_reply_no_connect() - like set_forward_no_connect(), but works for
  256. replies to the current message.
  257. set_forward_close() - try to close the connection after forwarding the
  258. current message (it applies only when the underlying protocol is
  259. connection oriented).
  260. set_reply_close() - like set_forward_close(), but it works for replies to
  261. the current message.
  262. tm:
  263. disable_6xx_block parameter - if set, will treat 6xx replies like normal
  264. replies (non rfc conformant). Default: off.
  265. See also t_set_disable_6xx().
  266. t_set_disable_6xx(0|1) - can be used to turn off/on the special 6xx handling
  267. on a per transaction basis.
  268. t_set_disable_failover(0|1) - can be used to turn off/on dns failover on a
  269. per transaction basis.
  270. 2.1.0 changes
  271. modules:
  272. - textops - functions:
  273. - remove_hf_re("regexp") -- filter message headers out
  274. by matching the header name field against a regular
  275. expression.
  276. - avp - export new selects table to allow dissecting the content of an
  277. attribute by interpreting it as a "name-addr" value
  278. - auth - experimental support for one-time nonces: when enabled a nonce
  279. will be accepted only for one response (each new request will
  280. be challenged). See one_time_nonce.
  281. - experimental support for nc checking when qop=auth
  282. (fast, non-locking implementation, see nonce_count,
  283. nc_array_size, nc_array_order and nid_pool_no)
  284. - switched to base64 nonces
  285. - record nonce generation time inside the nonce so that a
  286. received nonce can be checked against ser start time
  287. (if older => stale). This allows gracefully handling ser
  288. restarts with different auth configs.
  289. - added extra authentication checks support, to protect
  290. against various reply attacks.
  291. - params:
  292. - nonce_auth_max_drift - maximum difference in seconds
  293. from the current time, if a nonce appears to be
  294. created in the future (if exceeded the nonce is
  295. considered stale).
  296. - one_time_nonce - if enabled each nonce is allowed
  297. only once => each new request (including
  298. retransmissions!) will be challenged. It should be
  299. used only in stateful mode (so that tm deals with
  300. the retransmissions). The major disadvantage is that
  301. the UA won't be able to used any cached credentials
  302. (=> extra messages, extra round trips, more work for
  303. the proxy)
  304. - otn_in_flight_no - maximum number of in-flight nonces
  305. for one-time-nonces. It must be a number of the form
  306. 2^k (if not it will be automatically rounded down).
  307. The memory used will be otn_in_flight_no/8
  308. - otn_in_flight_order - like otn_in_flight_no, but
  309. instead of specifying the number as 2^k, it directly
  310. sets k (otn_in_flight_no=2^otn_in_flight_order)
  311. - nonce_count - if enabled and qop=auth or
  312. qop=auth-int, store and check received nc values
  313. (for details see rfc2617 and auth/doc). It should be
  314. used only in stateful mode (so that tm deals with
  315. the retransmissions which would otherwise be
  316. challenged). The major advantage is greatly
  317. enhanced security (extremely small probability of
  318. a succesfull replay attack) combine with support
  319. for cached credentials (if the UAs do support qop
  320. and auth)
  321. - nc_array_size - size of the array used for storing
  322. nc values, default 1Mb. It will be rounded down to
  323. a 2^k value. It represents the maximum number of
  324. in-flight nonces supported
  325. - nc_array_order - equivalent to nc_array_size, but
  326. instead of specifying the size in bytes, it can
  327. be used to directly set the power of 2 used
  328. (nc_array_size=2^nc_array_order)
  329. - nid_pool_no - number of nc and one-time-nonce array
  330. and index partitions, useful for increasing
  331. performance on multi-cpu systems (default 1,
  332. recommended 4)
  333. - auth_checks_register, auth_checks_no_dlg,
  334. auth_checks_in_dlg - flags specifying which extra
  335. message part/parts will be checked for change before
  336. allowing nonce reuse. See the auth module docs for
  337. for more information (modules/auth/README).
  338. - blst - new module containing script blacklist manipulations functions
  339. (the source of a message can be blacklisted, removed from the
  340. blacklist or checked for presence in the blacklist).
  341. - tm - added API function t_get_canceled_ident(): returns the hash
  342. coordinates (bucket/index) of the transaction the currently
  343. processed CANCEL is targeting. Requires AS support enabled.
  344. - added API function ack_local_uac(): allow generating the ACKs
  345. for 2xx'ed locally originated INVITEs - new headers and body can
  346. now also be appended to it. Requires AS support enabled.
  347. - matching of E2E ACKs no longer requires full From HF identity,
  348. but rather only tag equality (this behaviour can be changed by
  349. defining TM_E2E_ACK_CHECK_FROM_URI)
  350. - added t_reset_fr(), t_reset_retr(), t_reset_max_lifetime()
  351. - t_relay_to renamed to t_relay_to_avp (undocumented function)
  352. - t_relay() can now also take host and port parameters (e.g.
  353. t_relay(host, port)), behaving like a statefull
  354. forwad(host, port) version (forward to host:port using the same
  355. protocol on which the message was received)
  356. - t_relay_to_udp(), t_relay_to_tcp() and t_relay_to_tls() work
  357. now even with no parameters: in this case the message is
  358. forwarded using the request uri, but with the specified protocol
  359. (equivalent to a t_relay() with a forced protocol)
  360. - method for canceling unreplied branches can now be selected
  361. using the new cancel_b_method tm parameter.
  362. - support for adding a 503 reply source to the blacklist for
  363. the time specified in the Retry-After header (see the new tm
  364. parameters blst_503, blst_503_def_timeout, blst_503_min_timeout
  365. and blst_503_max_timeout).
  366. - different error replies for too many branches (500 but with
  367. different text), resolve error (478) or send error
  368. (477).
  369. - tm can be configured not to automatically send 100 replies
  370. for invites either globally (see the auto_inv_100 parameter)
  371. or on a per transaction basis (see t_set_auto_inv_100(...))
  372. - t_relay* error reply are delayed till the end of the script
  373. to allow the script writer to overwrite them
  374. - branches are always canceled hop by hop
  375. - cancels for silently canceled branches (no replies ever
  376. received) are automatically generated if later a provisional
  377. reply arrives on such a branch
  378. - noisy_ctimer is now 1 (on) by default
  379. - added maximum transaction lifetime - a transaction is not
  380. allowed to be active longer then this interval. See
  381. t_set_max_lifetime(), max_inv_lifetime and max_noninv_lifetime.
  382. - support for changing the retransmission intervals on the fly,
  383. on a per transaction basis (it is enabled if tm is compiled
  384. with -DTM_DIFF_RT_TIMEOUT -- default): t_set_retr(t1, t2).
  385. - transaction are deleted the moment they are not referenced
  386. anymore (removed the need for the delete timer) -- this
  387. should improve memory usage on very busy proxies.
  388. - lots of callbacks added
  389. - new onsend callbacks support (require defining TMCB_ONSEND prior
  390. to compiling tm)
  391. - behaviour when receiving a CANCEL which doesn't match any
  392. transaction can be selected using the unmatched_cancel param.
  393. - params:
  394. - cancel_b_method - selects one of the three methods
  395. for dealing with unreplied branches when the
  396. transaction must be canceled. The possible values
  397. are 0 (old behaviour) for stopping request
  398. retransmission on the branch and act as if
  399. the branch was immediately replied with a 487,
  400. 1 for continuing to retransmit the request until an
  401. answer is received or the timeout kicks in (default)
  402. and
  403. 2 for stopping the request retransmission and sending
  404. CANCEL on the branch (not rfc conforming).
  405. For more information see tm docs.
  406. - blst_503 - if set and if the blacklist is used
  407. (use_dst_blacklist=1), add the source of a 503 reply
  408. to the blacklist
  409. - blst_503_def_timeout - if the Retry-After header from
  410. a 503 reply is missing, use this value for the
  411. blacklist timeout (in s). Depends on blst_503.
  412. The default value is 0 ( do not blacklist if no
  413. Retry-After is present).
  414. - blst_503_min_timeot (in s) - if the 503 reply
  415. Retry-After header value is less, use this value
  416. for the blacklist timeout. Depends on blst_503.
  417. The default value is 0.
  418. - blst_503_max_timeout (in s) - if the 503 reply
  419. Retry-After header value is greater, use this value
  420. instead. Depends on blst_503.
  421. The default value is 3600 s.
  422. - auto_inv_100 - if set (default) tm will automatically
  423. send an 100 reply to INVITEs (see also
  424. t_set_auto_inv_100())
  425. - noisy_ctimer is now 1 by default
  426. - max_inv_lifetime & max_noninv_lifetime - default
  427. maximum lifetimes for an invite or non-invite
  428. transaction. After this interval has passed from
  429. the transaction creation the transaction will be
  430. either switched into the wait state or in the
  431. final response retransmission state => a transaction
  432. will be kept in memory for maximum:
  433. max_*inv_lifetime + fr_timer /*ack w.*/ +wait_timer.
  434. - unmatched_cancel - selects between forwarding cancels
  435. that do not match any transaction statefully (0,
  436. default value), statelessly (1) or dropping them
  437. (2). Note that the statefull forwarding has an
  438. additional hidden advantage: tm will be able to
  439. recognize INVITEs that arrive after their CANCEL.
  440. Note also that this feature could be used to try
  441. a memory exhaustion DOS attack against a proxy that
  442. authenticates all requests, by continuously flooding
  443. the victim with CANCELs to random destinations
  444. (since the CANCEL cannot be authenticated, each
  445. received bogus CANCEL will create a new transaction
  446. that will live by default 30s).
  447. - functions:
  448. - t_reset_fr() -- resets the current transaction
  449. fr_inv_timer and fr_timer to the default values
  450. (set via the tm modparams fr_inv_timer and fr_timer).
  451. - t_reset_retr() -- resets the current transaction
  452. retransmission intervals on the fly, to the default
  453. values (set via the tm modparams retr_timer1 and
  454. retr_timer2).
  455. - t_reset_max_lifetime() -- resets the current
  456. transaction maximum lifetime to the default value
  457. (set via the tm modparam max_inv_lifetime or
  458. max_noninv_lifetime).
  459. - t_grep_status("code") -- returns true if any branch
  460. received code as the final reply (or if no final
  461. reply was yet received, but a "code" provisional
  462. reply).
  463. - t_set_auto_inv_100(on/off) - switch automatically
  464. sending 100 replies to INVITEs on/off on a per
  465. transaction basis. It overrides the tm param.
  466. auto_inv_100.
  467. - t_set_max_lifetime(inv, noninv) - changes the
  468. maximum transaction lifetime on the fly, for the
  469. current or next to be created transaction.
  470. - t_set_retr(t1, t2) - changes the retransmissions
  471. intervals on the fly, on a per transaction basis.
  472. core:
  473. - most tcp config vars migrated to the dynamic config framework
  474. (can be changed at runtime, e.g.
  475. sercmd cfg.set_now_int tcp connection_lifetime 180 )
  476. - fallback to tcp or other congestion controlled transport
  477. protocol if a forwarded udp sip request is greater then
  478. udp_mtu (config). Default off. See udp_mtu and
  479. udp_mtu_try_proto.
  480. - sctp support (one-to-many, work in progress, for now linux
  481. and freebsd only)
  482. - partial cygwin (windows) support revived: core+static modules,
  483. no ipv6, no tcp, no dynamic modules
  484. - most of the config variables can now be changed on the fly,
  485. without ser restart (migration work in progress)
  486. - tcp improvements (better tcp timers, send fd cache, special
  487. options support)
  488. - dns naptr support (see dns_try_naptr and dns_<proto>_pref)
  489. - dns srv based load balancing support (see dns_srv_lb)
  490. - support for locking ser's pages in memory, pre-mapping
  491. all the shared memory on startup (fill it with 0)
  492. - real time options
  493. - devel: new PROC_INIT rank, init_child(PROC_INIT) called first
  494. - futex support on linux (better behaviour when waiting on
  495. long held locks, almost no performance impact otherwise)
  496. - when dns search list was used for resolution, store the "link"
  497. between the short name and long name in cache as CNAME record
  498. new config variables:
  499. tcp_rd_buf_size = buffer size used for tcp reads.
  500. A high buffer size increases performance on server with few
  501. connections and lot of traffic on them, but also increases
  502. memory consumption (so for lots of connection is better
  503. to use a low value). Note also that this value limits the
  504. maximum datagram size that can be received over tcp.
  505. Default: 4096, can be changed at runtime.
  506. tcp_wq_blk_size = block size used for tcp async writes. It should be big
  507. enough to hold a few datagrams. If it's smaller then a
  508. datagram (in fact a tcp write()) size, it will be rounded
  509. up. It has no influenced on the number of datagrams
  510. queued (for that see tcp_conn_wq_max or tcp_wq_max).
  511. It has mostly debugging and testing value (can be ignored).
  512. Default: 2100 (~ 2 INVITEs), can be changed at runtime.
  513. tcp_no_connect = yes/no - disable connects, ser will only accept new
  514. connections, it will never try to open new ones.
  515. Default: no, can be changed at runtime.
  516. udp_mtu = number - fallback to another protocol (udp_mtu_try_proto must be
  517. set also either globally or per packet) if the constructed
  518. request size is greater then udp_mtu.
  519. Recommended size: 1300. Default: 0 (off).
  520. udp_mtu_try_proto = TCP|TLS|SCTP|UDP - if udp_mtu !=0 and udp forwarded
  521. request size (after adding all the "local" headers) >
  522. udp_mtu, use this protocol instead of udp. Only the
  523. Via header will be updated (e.g. The Record-Route
  524. will be the one built for udp).
  525. Default: UDP (off). Recommended: TCP.
  526. force_rport =yes/no - like force_rport(), but works globally.
  527. disable_sctp = yes/no - disable sctp support (default auto, see enable_sctp)
  528. enable_sctp = 0/1/2 - disable (0)/enable (1)/auto (2) sctp support,
  529. default auto (2)
  530. sctp_children = number - sctp children no (similar to udp children)
  531. sctp_socket_rcvbuf = number - size for the sctp socket receive buffer
  532. sctp_socket_sndbuf = number - size for the sctp socket send buffer
  533. sctp_autoclose = seconds - number of seconds before autoclosing an idle
  534. association (default: 180 s).
  535. Can be changed at runtime, but it will affect only new
  536. associations. E.g.:
  537. $ sercmd cfg.set_now_int sctp autoclose 120
  538. sctp_send_ttl = milliseconds - number of milliseconds before an unsent
  539. message/chunk is dropped (default: 32000 ms or 32 s).
  540. Can be changed at runtime, e.g.:
  541. $ sercmd cfg.set_now_int sctp send_ttl 180000
  542. sctp_send_retries - how many times to attempt re-sending a message on a
  543. re-opened association, if the sctp stack did give up
  544. sending it (it's not related to sctp protocol level
  545. retransmission). Useful to improve reliability with
  546. peers that reboot/restart or fail over to another
  547. machine. WARNING: use with care and low values (e.g.
  548. 1-3) to avoid "multiplying" traffic to unresponding
  549. hosts (default: 0).
  550. Can be changed at runtime.
  551. sctp_assoc_tracking = yes/no - controls whether or not sctp associations
  552. are tracked inside ser/sip-router. Turning it off would result in
  553. less memory being used and slightly better performance, but it will also
  554. disable some other features that depend on it (e.g. sctp_assoc_reuse).
  555. Default: yes.
  556. Can be changed at runtime (sercmd sctp assoc_tracking 0), but changes
  557. will be allowed only if all the other features that depend on it are
  558. turned off (for example it can be turned off only if first
  559. sctp_assoc_reuse was turned off).
  560. Note: turning sctp_assoc_tracking on/off will delete all the tracking
  561. information for all the currently tracked associations and might introduce
  562. a small temporary delay in the sctp processing if lots of associations
  563. were tracked.
  564. Config options depending on sctp_assoc_tracking being on:
  565. sctp_assoc_reuse.
  566. sctp_assoc_reuse = yes/no - controls sctp association reuse. For now only
  567. association reuse for replies is affected by it. Default: yes.
  568. Depends on sctp_assoc_tracking being on.
  569. Note that even if turned off, if the port in via corresponds to the
  570. source port of the association the request was sent on or if rport is
  571. turned on (force_rport() or via containing a rport option), the
  572. association will be automatically reused by the sctp stack.
  573. Can be changed at runtime (sctp assoc_reuse), but it can be turned on
  574. only if sctp_assoc_tracking is on.
  575. sctp_max_assocs = number - maximum number of allowed open sctp associations.
  576. -1 means maximum allowed by the OS. Default: -1.
  577. Can be changed at runtime (e.g.:
  578. sercmd cfg.set_now_int sctp max_assocs 10 ).
  579. When the maximum associations number is exceeded and a new associations
  580. is opened by a remote host, the association will be immediately closed.
  581. However it is possible that some sip packets get through (especially if
  582. they are sent early, as part of the 4-way handshake).
  583. When ser/sip-router tries to open a new association and the max_assocs
  584. is exceeded the exact behaviour depends on whether or not
  585. sctp_assoc_tracking is on. If on, the send triggering the active open
  586. will gracefully fail, before actually opening the new association and no
  587. packet will be sent. However if sctp_assoc_tracking is off, the
  588. association will first be opened and then immediately closed. In general
  589. this means that the initial sip packet will be sent (as part of the 4-way
  590. handshake).
  591. sctp_srto_initial = milliseconds - initial value of the retr. timeout, used
  592. in RTO calculations (default: OS specific).
  593. Can be changed at runtime (sctp srto_initial) but it will affect only new
  594. associations.
  595. sctp_srto_max = milliseconds - maximum value of the retransmission timeout
  596. (RTO) (default: OS specific).
  597. WARNING: values lower then the sctp sack_delay will cause lots of
  598. retransmissions and connection instability (see sctp_srto_min for more
  599. details).
  600. Can be changed at runtime (sctp srto_max) but it will affect only new
  601. associations.
  602. sctp_srto_min = milliseconds - minimum value of the retransmission timeout
  603. (RTO) (default: OS specific).
  604. WARNING: values lower then the sctp sack_delay of any peer might cause
  605. retransmissions and possible interoperability problems. According to the
  606. standard the sack_delay should be between 200 and 500 ms, so avoid trying
  607. values lower then 500 ms unless you control all the possible sctp peers
  608. and you do make sure their sack_delay is higher or their sack_freq is 1.
  609. Can be changed at runtime (sctp srto_min) but it will affect only new
  610. associations.
  611. sctp_asocmaxrxt = number - maximum retransmissions attempts per association
  612. (default: OS specific). It should be set to sctp_pathmaxrxt * no. of
  613. expected paths.
  614. Can be changed at runtime (sctp asocmaxrxt) but it will affect only new
  615. associations.
  616. sctp_init_max_attempts = number - maximum INIT retransmission attempts
  617. (default: OS specific).
  618. Can be changed at runtime (sctp init_max_attempts).
  619. sctp_init_max_timeo = milliseconds - maximum INIT retransmission timeout (RTO
  620. max for INIT). Default: OS specific.
  621. Can be changed at runtime (sctp init_max_timeo).
  622. sctp_hbinterval = milliseconds - sctp heartbeat interval. Setting it to -1
  623. will disable the heartbeats. Default: OS specific.
  624. Can be changed at runtime (sctp hbinterval) but it will affect only new
  625. associations.
  626. sctp_pathmaxrxt = number - maximum retransmission attempts per path (see also
  627. sctp_asocmaxrxt). Default: OS specific.
  628. Can be changed at runtime (sctp pathmaxrxt) but it will affect only new
  629. associations.
  630. sctp_sack_delay = milliseconds - delay until an ACK is generated after
  631. receiving a packet. Default: OS specific.
  632. WARNING: a value higher then srto_min can cause a lot of retransmissions
  633. (and strange problems). A value higher then srto_max will result in very
  634. high connections instability. According to the standard the sack_delay
  635. value should be between 200 and 500 ms.
  636. Can be changed at runtime (sctp sack_delay) but it will affect only new
  637. associations.
  638. sctp_sack_freq = number - number of packets received before an ACK is sent
  639. (without waiting for the sack_delay to expire). Default: OS specific.
  640. Note: on linux with lksctp up to and including 1.0.9 is not possible to
  641. set this value (having it in the config will produce a warning on
  642. startup).
  643. Can be changed at runtime (sctp sack_freq) but it will affect only new
  644. associations.
  645. sctp_max_burst = number - maximum burst of packets that can be emitted by an
  646. association. Default: OS specific.
  647. Can be changed at runtime (sctp max_burst) but it will affect only new
  648. associations.
  649. server_id = number - A configurable unique server id that can be used to
  650. discriminate server instances within a cluster of
  651. servers when all other information, such as IP addresses
  652. are the same.
  653. loadpath = <modules path> - directory where to load the modules from (-L
  654. equivalent); modules can be loaded simply by specifying their name
  655. (loadmodule "maxfwd")
  656. tcp_fd_cache = yes | no (default yes) - if enabled FDs used for sending
  657. will be cached inside the process calling tcp_send (performance increase
  658. for sending over tcp at the cost of slightly slower connection closing and
  659. extra FDs kept open)
  660. tcp_async = yes | no (default yes) - if enabled all the tcp writes that
  661. would block / wait for connect to finish, will be queued and attempted
  662. latter (see also tcp_conn_wq_max and tcp_wq_max).
  663. tcp_buf_write = obsoleted synonim for tcp_async
  664. tcp_conn_wq_max = bytes (default 32 K) - maximum bytes queued for write
  665. allowed per connection. Attempting to queue more bytes would result
  666. in an error and in the connection being closed (too slow). If
  667. tcp_write_buf is not enabled, it has no effect.
  668. tcp_wq_max = bytes (default 10 Mb) - maximum bytes queued for write allowed
  669. globally. It has no effect if tcp_write_buf is not enabled.
  670. tcp_defer_accept = yes | no (default no) on freebsd / number of seconds
  671. before timeout on linux (default disabled) - tcp accepts will be
  672. delayed until some data is received (improves performance on proxies
  673. with lots of opened tcp connections). See linux tcp(7) TCP_DEFER_ACCEPT
  674. or freebsd ACCF_DATA(0). For now linux and freebsd only.
  675. WARNING: the linux TCP_DEFER_ACCEPT is buggy (<=2.6.23) and doesn't
  676. work exactly as expected (if no data is received it will retransmit
  677. syn acks for ~ 190 s, irrespective of the set timeout and then it will
  678. silently drop the connection without sending a RST or FIN). Try to
  679. use it together with tcp_syncnt (this way the number of retrans.
  680. SYNACKs can be limited => the timeout can be controlled in some way).
  681. tcp_delayed_ack = yes | no (default yes when supported) - initial ACK for
  682. opened connections will be delayed and sent with the first data
  683. segment (see linux tcp(7) TCP_QUICKACK). For now linux only.
  684. tcp_syncnt = number of syn retr. (default not set) - number of SYN
  685. retransmissions before aborting a connect attempt (see linux tcp(7)
  686. TCP_SYNCNT). Linux only.
  687. tcp_linger2 = seconds (not set by default) - lifetime of orphaned sockets
  688. in FIN_WAIT2 state (overrides tcp_fin_timeout on, see linux tcp(7)
  689. TCP_LINGER2). Linux only.
  690. tcp_keepalive = yes | no (default yes) - enables keepalive for tcp.
  691. tcp_keepidle = seconds (not set by default) - time before starting to send
  692. keepalives, if the connection is idle. Linux only.
  693. tcp_keepintvl = seconds (not set by default) - time interval between
  694. keepalive probes, when the previous probe failed. Linux only.
  695. tcp_keepcnt = number (not set by default) - number of keepalives sent before
  696. dropping the connection. Linux only.
  697. tcp_crlf_ping = yes | no (set by default) - enable CRLF keepalives aka
  698. SIP outbound.
  699. pmtu_discovery = 0 | 1 (default 0) - set DF bit in outbound IP if enabled
  700. dns_srv_lb = yes | no (default no) - enable dns srv weight based load
  701. balancing (see doc/dns.txt)
  702. dns_try_naptr = yes | no (default no) - enable naptr support
  703. (see doc/dns.txt for more info)
  704. dns_{udp,tcp,tls,sctp}_pref = number - ser preference for each protocol
  705. when doing naptr lookups. By default dns_udp_pref=30, dns_tcp_pref=20,
  706. dns_tls_pref=10 and dns_sctp_pref=20. To use the remote site preferences
  707. set all dns_*_pref to the same positive value (e.g. dns_udp_pref=1,
  708. dns_tcp_pref=1, dns_tls_pref=1, dns_sctp_pref=1). To completely ignore
  709. NAPTR records for a specific protocol, set the corresponding protocol
  710. preference to -1 (or any other negative number). (see doc/dns.txt for
  711. more info)
  712. dns_search_full_match = yes | no (default yes) - when name was resolved
  713. using dns search list, check the domain added in the answer matches with
  714. one from the search list (small performance hit, but more safe)
  715. mlock_pages = yes |no (default no) - locks all ser pages into memory making
  716. it unswappable (in general one doesn't want his sip proxy swapped out :-))
  717. shm_force_alloc = yes | no (default no) - tries to pre-fault all the
  718. shared memory, before starting. When on start time will increase, but
  719. combined with mlock_pages will guarantee ser will get all its memory from
  720. the beginning (no more kswapd slow downs)
  721. real_time = <int> (flags) (default off). - sets real time priority
  722. for all the ser processes, or the timers.
  723. Possible values: 0 - off
  724. 1 - the "fast" timer
  725. 2 - the "slow" timer
  726. 4 - all processes, except the timers
  727. Example: real_time= 7 => everything switched to real time priority.
  728. rt_prio = <int> (default 0) - real time priority used for everything except
  729. the timers, if real_time is enabled
  730. rt_policy= <0..3> (default 0)- real time scheduling policy, 0 = SCHED_OTHER,
  731. 1= SCHED_RR and 2=SCHED_FIFO
  732. rt_timer1_prio=<int> (default 0) - like rt_prio but for the "fast" timer
  733. process (if real_time & 1)
  734. rt_timer1_policy=<0..3> (default 0) - like rt_policy but for the "fast" timer
  735. rt_timer2_prio=<int> (default 0) - like rt_prio but for the "slow" timer
  736. rt_timer2_policy=<0..3> (default 0) - like rt_policy but for the "slow" timer
  737. tcp_source_ipv4 = IPv4 address
  738. tcp_source_ipv6 = IPv6 address
  739. Set the given source IP for all outbound TCP connections.
  740. If setting the IP fails the TCP connection will use the default.
  741. dns_cache_init = on | off (default on) - if off, the dns cache is not
  742. initialized at startup and cannot be enabled runtime, that saves some
  743. memory.
  744. dst_blacklist_init = on | off (default on) - if off, the blacklist
  745. is not initialized at startup and cannot be enabled runtime,
  746. that saves some memory.
  747. new script commands:
  748. udp_mtu_try_proto(TCP|TLS|SCTP|UDP) - same as udp_mtu_try_proto=... (see
  749. above), but works per packet and not globally.
  750. build system:
  751. - check defines and includes used at compile time and if different
  752. force rebuilding everything in the current dir (creates a new file:
  753. makecfg.lst that stores the compile defines & includes used at compile
  754. time)
  755. - make cfg / config support: store the build config in an autogenerated file
  756. (config.mak) and use it for future compiles (e.g.:
  757. make cfg include_modules=mysql skip_modules=print CPU=pentium-m; make all).
  758. Main advantages are easier usage and faster builds (e.g. make proper is
  759. +16 times faster, make clean ~9 times, make with previously generated
  760. config is 2.6 times faster and a make that has nothing to do is ~9 times
  761. faster).
  762. 2.0.0 changes
  763. new archs:
  764. modules:
  765. - tls - new module that enables tls support (set enable_tls=yes
  766. in the config file and load the tls module)
  767. - ctl - new fifo/unixsocket/xmlrpc like module, using a space
  768. efficient binary encoding for the requests.
  769. It supports multiple clients on tcp, udp, unix stream or
  770. unix datagram modes. By default (no modparams) it opens
  771. one unix stream control socket in /tmp/ser_ctl.
  772. It also includes extended fifo support: multiple fifos,
  773. fifo over tcp, udp and unix sockets (see ctl/ctl.cfg).
  774. Use utils/sercmd/sercmd to send commands to it.
  775. - dispatcher - added hashing after request uri and to uri
  776. - added a new flag parameter which can be used (for now) to
  777. select only the username or the username, host and port when
  778. hashing after an uri (to, from or request uri)
  779. - improved uri hashing (password is ignored, port is used only
  780. if != 5060 or 5061)
  781. - tm - aggregate challenges (WWW/Proxy-Authenticate) from all the
  782. 401 & 407 if the final reply is a 401/407. To turn this off
  783. and fall back to the old behaviour set tm aggregate_challenges
  784. parameter to 0.
  785. - if a relayed 503 is the final reply, replace it by a 500
  786. - if a 503 reply is received try the dns based failover
  787. (forward to another ip if the original destination uri
  788. resolved to several SRV, A or AAAA records)
  789. - on 6xx immediately cancel all the branches for which a
  790. provisional response was received and wait for all the
  791. branches to finish (either timeout, the 487 from the CANCEL
  792. or a final response still on the wire in the moment the
  793. CANCEL was sent)
  794. - better final reply selection: 6xx is preferred over other
  795. negative replies; from several 4xx prefer 401, 407, 415, 420,
  796. 484 (in this order). For all the other cases, return the lowest
  797. code (as before)
  798. - special functions for checking for timeout, if a reply was
  799. received or if the current transaction was canceled
  800. - dns failover and dst blacklist support
  801. - migrated to the new timers (tm timers completely rewritten)
  802. - improved speed and less memory usage
  803. - much more precise retransmissions timing
  804. - params: - retr_timer1p1, retr_timer1p2, retr_timer1p3 removed
  805. and replaced by retr_timer1 and retr_timer2
  806. - all timer values are now expressed in milliseconds
  807. (they were in seconds before).
  808. Affected params: fr_timer, fr_inv_timer, wt_timer,
  809. delete_timer, retr_timer1, retr_timer2
  810. - retr_timer1 (first retransmission) changed to 500 ms
  811. - delete_timer changed to 200 ms
  812. - unix_tx_timeout expressed now in milliseconds; default
  813. value changed to 500 ms
  814. - functions:
  815. - t_branch_timeout() -- returns true if the failure
  816. route is executed for a branch that did timeout
  817. (failure_route only).
  818. - t_branch_replied() -- returns true if the failure
  819. route is executed for a branch that did receive at
  820. least one reply in the past (the current reply
  821. is not taken into account). It can be used
  822. together with t_branch_timeout() to distinguish
  823. between a remote side that doesn't respond (some
  824. provisional reply received) and one that is completely
  825. dead. (failure_route only)
  826. - t_any_timeout() -- returns true if any of the current
  827. transaction branches did timeout.
  828. - t_any_replied() -- returns true if at least one branch
  829. of the current transaction received one reply in the
  830. past. If called from a failure_route or an
  831. onreply_route, the "current" reply is not taken into
  832. account.
  833. - t_is_canceled() -- returns true if the current
  834. transaction has been canceled.
  835. - new t_set_fr(timeout_fr_inv, timeout_fr) -- allows
  836. changing the transaction timer from script, even if
  837. the transaction was already created (see tm docs for
  838. more).
  839. - t_relay will not stop script execution anymore in case of
  840. send error
  841. - textops - search() can be used in the onsend_route where it will search
  842. on the "new" message (after applying all script changes, adding
  843. Vias a.s.o) and not on the original message
  844. core:
  845. - compiled by default with tls hooks support (so that no recompile is
  846. needed before loading the tls module and enabling the tls support)
  847. - enable_tls config option added (the reverse of disable_tls)
  848. - added STUN keep-alive functionality in accordance with
  849. draft-ietf-behave-rfc3489bis-04.txt
  850. - dns cache and dns failover support added (see doc/dns.txt)
  851. - destination blacklist added -- destinations to which forwarding fails
  852. (send error, tm timeout a.s.o) are temporarily added to a blacklist which
  853. is consulted before each send => faster send error detection
  854. in the near future (see doc/dst_blacklist.txt)
  855. - default log level switched to 0 (only messages < L_WARN will be printed
  856. by default)
  857. - separate memdbg log level which controls the memory/malloc related
  858. debug messages (to see them ser must be compiled with malloc debuging:
  859. -DDBG_QM_MALLOC or -DDBG_FM_MALLOC and memdbg must be <= debug )
  860. - added named routes: names can be used instead of numbers in all the
  861. route commads or route declarations. route(number) is equivalent to
  862. route("number").
  863. Example:
  864. route("test");
  865. route["test"]{
  866. ...
  867. }
  868. - added named flags, declared at the beginning of the config file with:
  869. flags flag1_name[:position], flag2_name ...
  870. Example:
  871. flags test, a:1, b:2 ;
  872. route{
  873. setflag(test);
  874. if (isflagset(a)){ # equiv. to isflagset(1)
  875. ....
  876. }
  877. resetflag(b); # equiv. to resetflag(2)
  878. - added return [val] which returns from a route. if no value is specified, or
  879. a route reaches its end without executing a return statement, it returns 1.
  880. If return is used in the top level route is equivalent with exit [val].
  881. - drop /exit [n] now will end the script execution
  882. exit n will exit with code n (usefull in onreply/onsend routes where
  883. if script code !=0 a reply is generated/the message is sent or to force
  884. script errors)
  885. - added $? which can be used to check the return code of the last executed
  886. route{} (e.g. route(1); if ($?==1){ /* ... */}else if ($?==2) ... )
  887. - onsend_route added: special route executed before a request is sent.
  888. Only a limited number of commands are allowed (drop, if
  889. + all the checks, msg flag manipulations, send(), log(),
  890. textops::search()). In this route the final destination
  891. of the message is available an can be checked (with
  892. snd_ip, snd_port, to_ip, to_port, snd_proto, snd_af).
  893. This route is executed only when forwarding requests.
  894. It's not executed for replies, retransmissions, or
  895. locally generated messages (e.g. via fifo uac).
  896. short example:
  897. onsend_route{ if(to_ip==1.2.3.4 && !isflagset(12)){
  898. log(1, "message blocked\n");
  899. drop;
  900. }
  901. }
  902. - onsend_route specific checks:
  903. - snd_ip, snd_port - behave like src_ip/src_port, but contain the
  904. ip/port ser will use to send the message
  905. - to_ip, to_port - like above, but contain the ip/port the message will
  906. be sent to (not to be confused with dst_ip/dst-port, which are the
  907. destination of the original message: ser's ip and port on which the
  908. message was received)
  909. - snd_proto, snd_af - behave like proto/af but contain the
  910. protocol/address family that ser will use to send the message
  911. - msg:len - when used in an onsend_route, msg:len will contain the length
  912. of the message on the wire (after all the changes in the script are
  913. applied, Vias are added a.s.o) and not the lentgh of the original
  914. message
  915. - timer: - improved performance/precision, new api, see doc/timers.txt
  916. - tcp: - improved performance (io event handling), using OS specific
  917. optimizations
  918. - 1024 connections limit removed (see tcp_max_connections)
  919. - resolver: - timeouts, retries a.s.o can now be set from ser.cfg
  920. (see below dns_* and man resolv.conf(6)).
  921. The maximum time a dns request can take (before failing) is:
  922. (dns_retr_time*dns_retr_no)*(search_list_domains)
  923. If dns_try_ipv6 is yes, mutliply it again by 2.
  924. The fastest possible dns config (max 1s):
  925. dns_try_ipv6=no
  926. dns_retr_time=1
  927. dns_retr_no=1
  928. dns_use_search_list=no
  929. - default on reply route added: onreply_route {.. } will add a default
  930. onreply route that will be executed for any reply (usefull to catch
  931. replies without using tm)
  932. - branch_routes added (tm triggered), only a very limited number of commands
  933. are available (see tm docs)
  934. - avps directly accessible from script with %avp_name (variable style)
  935. new config variables:
  936. enable_tls/disable_tls = enable/disable tls support, default disable.
  937. Note: a tls "engine" is still needed (e.g. the tls module must
  938. be loaded, enable_tls by itself is not enough).
  939. exit_timeout = seconds - how much time ser will wait for all the shutdown
  940. procedures to complete. If this time is exceeded, all the remaining
  941. processes are immediately killed and ser exits immediately (it might
  942. also generate a core dump if the cleanup part takes too long).
  943. Default: 60 s. Use 0 to disable.
  944. stun_refresh_interval = number in millisecond (default 0); value for
  945. attribute REFRESH INTERVAL
  946. stun_allow_stun = 0 | 1 (off | on - default 1); use STUN or not if compiled
  947. stun_allow_fp = 0 | 1 (off | on - default 1); use FINGERPRINT attribute
  948. use_dns_cache = on | off (default on)
  949. use_dns_failover = on | off (default off)
  950. dns_cache_flags = number (default 0)
  951. dns_cache_negative_ttl = number in seconds (default 60)
  952. dns_cache_min_ttl = time in seconds (default 0)
  953. dns_cache_max_ttl = time in seconds (default MAXINT)
  954. dns_cache_mem = maximum memory used for the dns cache in Kb (default 500 K)
  955. dns_cache_gc_interval = interval in seconds after which the dns cache is
  956. garbage collected (default: 120 s)
  957. use_dst_blacklist = on | off (default off)
  958. dst_blacklist_expire = time in s (default 60)
  959. dst_blacklist_mem = maximum memory used for the blacklist in Kb (default 250
  960. K)
  961. dst_blacklist_gc_interval = interval in seconds after which the destination
  962. blacklist is garbage collected (default 60)
  963. tos = number - ip type of service (TOS) value
  964. dns_try_ipv6 = yes/no - if yes and a dns lookup fails, it will retry it
  965. for ipv6 (AAAA record). Default: yes
  966. dns_retr_time = time - time in s before retrying a dns request.
  967. Default: system specific, depends also on the/etc/resolv.conf content
  968. (usually 5s).
  969. dns_retr_no = no. - number of dns retransmissions before giving up.
  970. Default: see above (usually 4)
  971. dns_servers_no = no. - how many dns servers from the ones defined in
  972. /etc/resolv.conf will be used. Default: all of them.
  973. dns_use_search_list= yes/no - if no, the search list in /etc/resolv.conf
  974. will be ignored (=> fewer lookups => gives up faster). Default: yes.
  975. HINT: even if you don't have a search list defined, setting this option
  976. to "no" will still be "faster", because an empty search list is in
  977. fact search "" (so even if the search list is empty/missing there will
  978. still be 2 dns queries, eg. foo+'.' and foo+""+'.')
  979. tcp_connection_lifetime = value (s) - how long the lifetime of a
  980. tcp connection will be exteneded after an IO event (accept, connect,
  981. read, write). Default: 120 s.
  982. tcp_poll_method = poll|select|sigio_rt|epoll_et|epoll-lt|kqueue|devpoll -
  983. poll method used (by default the best one for the current OS is selected)
  984. tcp_max_connections = no. - maximum number of tcp connections (if the number
  985. is exceeded no new tcp connections will be accepted). Default: 2048.
  986. tools:
  987. utils/sercmd - command line serctl like tool for interrogating ser ctl
  988. module (uses the binrpc encoding). Supports various
  989. connection methods (udp, tcp, unix stream & datagram sockets),
  990. reply formating (see -f, e.g. sercmd -f "pid:%v %v\n" core.ps)
  991. , interactive mode, command line completion (if compiled with
  992. libreadline) a.s.o.
  993. WARNING: - older 0.10.99-dev version (< 0.10.99-dev46) returned a 480 reply
  994. on invite transaction timeout, if a provisional reply was received. Newer
  995. versions reverted to returning 408 on all timeouts (one can use
  996. t_branch_timeout() and t_branch_replied() to distinguish between the two
  997. timeout types)
  998. 0.9.4 fixes/improvements (0.9.4 is a bug fix release for 0.9.3)
  999. general:
  1000. - gcc 4.0 support
  1001. - mutlicast options are set for all the sockets
  1002. - mediaproxy: memory leak, unchecked memory allocations
  1003. - postgress: some bugs and cleanups (compiles cleanly now)
  1004. - tm: shm cloned lumps (SER-55)
  1005. - tm: t_fifo: 64-bit fix
  1006. - tm: dst_uri clone fix
  1007. - tm: t_newtran/t_restransmit* races (!)
  1008. - usloc: memory leak
  1009. solaris:
  1010. - serctl, better ISA detection, signals
  1011. *bsd:
  1012. - multicast options are properly set
  1013. openbsd:
  1014. - tcp 64 bit fix
  1015. 0.9.3 changes
  1016. new archs:
  1017. - alpha experimental support
  1018. - mips2/cobalt experimental support
  1019. - x86_64 support
  1020. - OS X (darwin) support
  1021. - sparc32 single cpu highly experimental support
  1022. - ppc64 support
  1023. modules:
  1024. - enum - support for more than one NAPTR
  1025. - msilo - explicit multidomain support -- recipient's user ID is stored in
  1026. the columns username and domain -- r_uri column kept for compatibility
  1027. reasons (will be removed in future) but not filled by this version of
  1028. module
  1029. - mysql - implements a connection pool, all modules will use same connection
  1030. to access the database
  1031. - nathelper received port test (flag 16 for nat_uac_test): compares the
  1032. source port of the message with sip port in the first Via and returns
  1033. true if different.
  1034. - permsions - support for multiple allow/deny files, allow_register function
  1035. - TM has a new parameter: restart_fr_on_each_reply. If set (default)
  1036. fr_inv timer will be restarted for each provisional reply, if not set
  1037. it will be restarted only for the first reply and for replies >=180
  1038. (but only if increasing, eg.: 180, 181 ...). Usefull when dealing with bad
  1039. UAs that re-transmit 180s.
  1040. - TM saves the avp list into transactions, and make it available into
  1041. callbacks, failure and reply routes.
  1042. - TM contains new command - t_write_unix("/tmp/sems.sock", "announcement")
  1043. sends a message using unix socket interface instead of FIFO interface.
  1044. - TM contains new config variable - unix_tx_timeout -- it specifies the
  1045. transmit timeout of t_write_sock
  1046. - VM functionality was transfered into TM module. Instead of fetching the
  1047. email value from DB (as VM), TM looks for the "email" attribute to get the
  1048. value.
  1049. vm() function was replaced with t_write_req()
  1050. vm_reply() fifo functions was replcated by TM with t_reply() fifo function
  1051. NOTE!! because current version of SEMS/AA try to send reply via vm_reply,
  1052. it will not work with the TM version.
  1053. - xlog - printing the body of any header by specifying the name; new
  1054. specifiers for user-agent, message buffer, message length, message's flags,
  1055. message id.
  1056. new modules:
  1057. - avp / avp_db / avp_radius - load and check avps per caller or callee
  1058. - avpops - flexible module for operations with avps and database, introducing
  1059. a pseudo-varible support in SER configuration file
  1060. - cpl-c - implementation of Call Processing Language
  1061. - dispatcher - implements a dispatcher for incoming requests using hashes
  1062. over parts of the request to select the destination
  1063. - diversion - implements the Diversion extensions as per
  1064. draft-levy-sip-diversion-08
  1065. - flatstore - simple module that implements very fast inserts for accounting
  1066. purposes
  1067. - gflags - keeps a bitmap of flags in shared memory and may be used to change
  1068. behaviour of server based on value of the flags
  1069. - options - answer server options requests
  1070. - speeddial - provides on-server speed dial facilities
  1071. - uri_db - split from uri module, performs various checks related to SIP URI
  1072. over database fields
  1073. removed modules:
  1074. - vm - the functionality was transfered to tm module (see t_write_req(...)
  1075. method)
  1076. core:
  1077. - new parts:
  1078. UNIX domain socket server implemented
  1079. - changes:
  1080. - command line: removed -p port and extended -l:
  1081. -l [proto:]addr[:port] , where proto=udp|tcp and
  1082. addr= host|ip_address|interface_name. The format is the same
  1083. as for listen in the config file. ipv6 addresses must be enclosed in
  1084. [].
  1085. - added from_uri & to_uri: behave exactly like uri but use the
  1086. "From:"/"To:" uris
  1087. (e.g.: if (from_uri==myself) ..., if (to_uri=~"^sip:test@")... )
  1088. - config: better escape support in strings (e.g. \", \<cr>, \x0a, \012)
  1089. - bad network addresses are now automatically fixed
  1090. (e.g. 192.168.1.80/27 => 192.168.1.64/27)
  1091. - avp (Attribute-Value Pair) support added
  1092. - avp alias support added
  1093. - multicast support added (see mcast_loopback & mcast_ttl)
  1094. - saving of procces group id enabled, if the -G option is specified
  1095. (a safe way to quickly kill all ser processes)
  1096. - core dump-ing is enabled by default, see also disable_core_dump
  1097. - protocol and port can be specified in the alias and listen lines, e.g.:
  1098. alias= tcp:foo.bar:* udp:test.bar:5080 foo.com
  1099. listen= eth0 tcp:eth0:5065 udp:127.0.0.1 [3ffe::1]
  1100. - multiple operator support: ==, != for special operations (e.g myself, ip)
  1101. ==, !=, ~= for strings
  1102. ==, !=, >, <, >=, <= for integers
  1103. - database api changed to support usage of different drivers
  1104. simultaneously. The database URL must start now with the name of the
  1105. driver (module). Example: for mysql the DB URL
  1106. 'sql://user:password@dbhost:port/database' must be specified now as
  1107. 'mysql://user:password@dbhost:port/database'
  1108. - new config variables:
  1109. mcast_loopback = <yes/no> - loopback sent multicast datagram, default no.
  1110. mcast_ttl = number - set multicast ttl, default OS specific (usually 1).
  1111. sock_mode = <permissions> (e.g. sock_mode=0600: default value = 0660)
  1112. ser unix sockets and fifo will be created with this permissions
  1113. (old name fifo_mode is still supported, but deprecated)
  1114. sock_user = username|"uid"
  1115. sock_group = groupname|"gid"
  1116. change the owner and/or group of the ser unix sockets or fifo
  1117. Short example config snippet:
  1118. sock_mode=0600 # ser socket/fifo mode
  1119. sock_user="www-data" # ser socket/fifo owner
  1120. sock_group=nogroup
  1121. user=nobody # ser user (ser will suid to it)
  1122. disable_core_dump= yes|no
  1123. by default core dump limits are set to unlimited or a high enough
  1124. value, set this config variable o yes to disable core dump-ing
  1125. (will set core limits to 0)
  1126. open_files_limit= number
  1127. if set and bigger than the current open file limit, ser will try
  1128. to increase its open file limit to this number. Note: ser must be
  1129. started as root to be able to increase a limit past the hard limit
  1130. (which, for open files, is 1024 on most systems)
  1131. tcp_connect_timeout= seconds
  1132. time before an ongoing connect will be aborted
  1133. tcp_send_timeout= seconds
  1134. time after a tcp connection will be closed if it is not available
  1135. for writing in this interval (and ser wants to send something on it)
  1136. tcp_accept_aliases= yes|no
  1137. if a message received over a tcp connection has "alias" in its via
  1138. a new tcp alias port will be created for the connection the message
  1139. came from (the alias port will be set to the via one).
  1140. Based on draft-ietf-sip-connect-reuse-00.txt, but using only the port
  1141. (host aliases are too dangerous IMHO, involve extra DNS
  1142. lookups and the need for them is questionable)
  1143. See force_tcp_alias for more details.
  1144. log_facility = LOG_LOCAL0
  1145. if ser logs to syslog, you can control the facility for logging. Very
  1146. useful when you want to divert all ser logs to a different log file.
  1147. See man page syslog(3) for more detailes.
  1148. unix_sock = "/tmp/ser.sock"
  1149. The name of the socket the unixsock server should listen on.
  1150. unix_sock_children = 1
  1151. The number of children that will listen on the unix domain socket.
  1152. unix_tx_timeout = 2000
  1153. Timeout (in ms) used when sending replies through unix sockets.
  1154. - new script commands:
  1155. force_send_socket([proto:]address[:port])
  1156. sends the message from the specified socket (it _must_ be one of the
  1157. sockets ser listens on). If the protocol doesn't match (e.g. udp
  1158. message "forced" to a tcp socket) the closest socket of the same
  1159. protocol is used.
  1160. force_tcp_alias()
  1161. force_tcp_alias(port)
  1162. adds a tcp port alias for the current connection (if tcp).
  1163. Usefull if you want to send all the trafic to port_alias through
  1164. the same connection this request came from [it could help
  1165. for firewall or nat traversal].
  1166. With no parameters adds the port from the message via as the alias.
  1167. When the "aliased" connection is closed (e.g. it's idle for too
  1168. much time), all the port aliases are removed.
  1169. Note: by default ser closes idle connection after 3 minutes (stable)
  1170. or 1 minute (unstable) so to take full advantage of tcp aliases for
  1171. things like firewall and nat traversal, redefine TCP_CON_*TIMEOUT
  1172. in tcp_conn.h and recompile. Also right now there can be maximum
  1173. 3 port aliases to a connection (you shouldn't need more than one).
  1174. To change this redefine TCP_CON_MAX_ALIASES in the same file
  1175. (set it to you desired value + 1; 1 is needed for the real port).
  1176. utilities:
  1177. - ngrep patch for displaying new lines in captured SIP messages is no longer
  1178. needed; use ngrep V 1.42 with the option "-W byline"
  1179. ***********************************************
  1180. * Changes/fixes introduced in 0.8.12
  1181. ***********************************************
  1182. +--------------------------------------------------------+
  1183. | WARNING: if you want to use a 0.8.11 config script |
  1184. | with 0.8.12, replace if ( len_gt(number) ) with: |
  1185. | if ( msg:len > bumber ) |
  1186. +--------------------------------------------------------+
  1187. New Features
  1188. ============
  1189. texops:
  1190. - subst('s/re/repl/flags') support
  1191. core:
  1192. - added switch to check the config file (-c)
  1193. - changes: removed len_gt() and replaced with if (msg:len op number|max_len)
  1194. - multiple operator support: ==, != for special operations (e.g myself, ip)
  1195. ==, !=, ~= for strings
  1196. ==, !=, >, <, >=, <= for integers
  1197. - new config variables:
  1198. advertised_address= ip | string
  1199. address advertised in via and in the DST_* lumps (e.g RR)
  1200. This is the default value, if empty (default) the socket
  1201. address will be used.
  1202. WARNING: - don't set it unless you know what you are doing
  1203. (e.g. nat traversal)
  1204. - you can set anything here, no check is made
  1205. (e.g. foo.bar will be accepted even if
  1206. foo.bar doesn't exist)
  1207. advertised_port= no
  1208. port advertised in via and in the DST_*lumps (e.g. RR)
  1209. This is the default value, if empty (default) the socket
  1210. port will be used.
  1211. Same warnings as above.
  1212. - new script commands:
  1213. set_advertised_address(ip|string)
  1214. same as advertised_address but it affects only the current message:
  1215. Message host/lump address= the set_advertised one if
  1216. present, else advertised_address else socket address.
  1217. set_advertised_port(no)
  1218. same as advertised_port but it affects only the current
  1219. message; see set_advertised_address & s/address/port/g
  1220. usrloc:
  1221. - usernames are case insensitive
  1222. registrar:
  1223. - lookup function succeeds when appending of a branch failed
  1224. auth_db:
  1225. - support for rpid stored in database (thanks to Jakob Schlyter)
  1226. Bug fixes
  1227. =========
  1228. - memory leak in digest credentials parser fixed
  1229. - authenticathion ha1 didn't include domain if username was of the form
  1230. user@domain and calculate_ha1 was set to yes (modules/auth_db)
  1231. - tm reply processing race condition (modules/tm), special thanks go to
  1232. Dong Liu
  1233. - Many bugs in pa module fixed, works with registrar again.
  1234. Security updates
  1235. ================
  1236. - fifo processing code will write responses only to other
  1237. fifos and only if they are not hard-linked, also default
  1238. ser fifo persmissions were changed to 0600.
  1239. Performance improvements
  1240. ========================
  1241. - tuned internal malloc implementation parameters to better reflect the
  1242. actual workload (malloc is a little bit faster now)
  1243. ***********************************************
  1244. * Changes introduced in 0.8.11
  1245. ***********************************************
  1246. +--------------------------------------------------------+
  1247. | CAUTION: the 0.8.11 release include changes which |
  1248. | are incompatible with scripts and databases used |
  1249. | in previous versions. Care is advised when upgrading |
  1250. | from previous releases to 0.8.11. |
  1251. +--------------------------------------------------------+
  1252. New features
  1253. =============
  1254. - RFC3261 support
  1255. - TCP support and cross-transport forwarding [core]
  1256. - loose routing support [rr module]
  1257. - New modules
  1258. - vm -- voicemail interface [vm]
  1259. - ENUM support [enum]
  1260. - presence agent [pa]
  1261. - dynamic domain management -- allows to manipulate
  1262. hosting of multiple domains in run-time [module]
  1263. - flat-text-file database support [dbtext]
  1264. - rich access control lists [permissions]
  1265. - Feature Improvements
  1266. - click-to-dial, which is based on improved tm/FIFO
  1267. that better supports external applications [tm module]
  1268. - web accounting -- acc module can report to serweb
  1269. on placed calls [acc module]
  1270. - improved exec module (header fields passed now
  1271. as environment variables to scripts) [exec module]
  1272. - Architectural Improvements
  1273. - powerpc fast locking support
  1274. - netbsd support
  1275. - 64 bits arch. support (e.g. netbsd/sparc64).
  1276. - New Experimental Features (not tested at all yet)
  1277. - nathelper utility for Cisco/ATA NAT traversal [nathelper]
  1278. - another NAT traversal utility [mangler]
  1279. - postgress support [postgress]
  1280. - fcp module [fcp]
  1281. - pdt module (prefix2domain) [pdt]
  1282. Changes to use of ser scripts
  1283. =============================
  1284. About Multiple Transport Support
  1285. --------------------------------
  1286. SER now suports multiple transport protocols: UDP and TCP. As there
  1287. may be UAs which support only either protocol and cannot speak to
  1288. each other directly, we recommend to alway record-route SIP requests,
  1289. to keep the transport-translating SER in path. Also, if a destination
  1290. transport is not known, stateful forwarding is recommended -- use of
  1291. stateless forwarding for TCP2UDP would result in loss of reliability.
  1292. core
  1293. ----
  1294. - reply_route has been renamed to failure_route -- the old name caused
  1295. too much confusion
  1296. - forward_tcp and forward_udp can force SER to forward via specific
  1297. transport protocol
  1298. acc module:
  1299. -----------
  1300. - radius and sql support integrated in this module; you need to
  1301. recompile to enable it
  1302. - acc_flag is now called log_flag to better reflect it relates
  1303. to the syslog mode (as opposed to sql/radius); for the same
  1304. reasons, the accounting action is now called "acc_log_request"
  1305. and the option for missed calls "log_missed_calls"
  1306. - log_fmt allows now to specify what will be printed to syslog
  1307. auth module:
  1308. ------------
  1309. - auth module has been split in auth, auth_db, auth_radius, group
  1310. group_radius, uri and uri_radius
  1311. - all the parameters that were part of former auth module are now
  1312. part of auth_db module
  1313. - auth_db module contains all functions needed for database
  1314. authentication
  1315. - auth_radius contains functions needed for radius authentication
  1316. - group module contains group membership checking functions
  1317. - group_radius contains radius group membeship checking functions
  1318. - is_in_group has been renamed to is_user_in and places to groups
  1319. module
  1320. - check_to and check_from have been moved to the uri module
  1321. im module:
  1322. ----------
  1323. - im is no longer used and has been obsoleted by TM
  1324. exec module:
  1325. ------------
  1326. - exec_uri and exec_user have been obsoleted by exec_dset;
  1327. exec_dset is identical to exec_uri in capabilities; it
  1328. additionaly passes content of request elements (header
  1329. fields and URI parts) in environment variables; users of
  1330. exec_user can use exec_dset now and use the "URI_USER"
  1331. variable to learn user part of URI
  1332. - exec_dset and exec_msg return false, if return value of
  1333. script does not euqal zero
  1334. - exec_dset takes an additional parameter, which enables
  1335. validation of SIP URIs returned by external application
  1336. jabber module:
  1337. --------------
  1338. - presence support for Jabber users is enabled loading the PA
  1339. module and using handle_subscribe("jabber") for SUBSCRIBE
  1340. requests to jabber user
  1341. msilo module:
  1342. -------------
  1343. - m_store has now a parameter to set what should be considered
  1344. for storing as destination uri. This enables support for saving
  1345. the messages on negative replies.
  1346. radius_acc module:
  1347. ------------------
  1348. - radius_acc module has been removed and radius accounting
  1349. is now part of acc module
  1350. registrar/usrloc modules:
  1351. -------------------------
  1352. - multi domain support, the modules user username@domain as AOR
  1353. if enabled
  1354. - descent modification time ordering of contacts
  1355. - case sensitive/insensitive comparison of URI can be enabled
  1356. rr module:
  1357. ----------
  1358. - addRecordRoute has been replaced with record_route
  1359. - rewriteFromRoute has been replaced with loose_route()
  1360. - a new option, "enable_full_lr" can be set to make life
  1361. with misimplemented UAs easier and put LR in from "lr=on"
  1362. - rr module can insert two Record-Route header fields when
  1363. necesarry (disconnected networks, UDP->TCP and so on)
  1364. tm module:
  1365. ----------
  1366. - t_reply_unsafe, used in former versions within reply_routes,
  1367. is deprecated; now t_reply is used from any places in script
  1368. - t_on_negative is renamed to t_on_failure -- the old name just
  1369. caused too much confusion
  1370. - FIFO t_uac used by some applications (like serweb) has been
  1371. replaced with t_uac_dlg (which allows easier use by dialog-
  1372. oriented applications, like click-to-dial)
  1373. - if you wish to do forward to another destination from
  1374. failure_route (reply_route formerly), you need to call t_relay
  1375. or t_relay_to explicitely now
  1376. - t_relay_to has been replaced with t_relay_to_udp and t_relay_to_tcp