12 years agotm: blacklist on 503 reply fixed for send flags
Andrei Pelinescu-Onciul [Fri, 19 Feb 2010 14:35:57 +0000 (15:35 +0100)]
tm: blacklist on 503 reply fixed for send flags

Blacklisting the source of a 503 reply now obeys also the
blacklist ignore masks (both global and per message).
The ignore 503 blacklist flag can be set (and it will be obeyed)
in any route (be it main route, on branch, on send or the on_reply
route). E.g.: using blst_set_ignore(32) in the onsend_route for a
specific destination would cause the ignore 503 flag to be
inherited by the 503 reply (this is the only blacklist flag that
it's inherited this way).

12 years agoNEWS: mentioned blacklist ignore masks
Andrei Pelinescu-Onciul [Wed, 17 Feb 2010 09:00:57 +0000 (10:00 +0100)]
NEWS: mentioned blacklist ignore masks

12 years agocore: cfg script support for blacklist ignore masks
Andrei Pelinescu-Onciul [Wed, 17 Feb 2010 08:58:21 +0000 (09:58 +0100)]
core: cfg script support for blacklist ignore masks

The blacklist ignore mask can now be set from the script (not only
at runtime):

E.g. dst_blacklist_udp_imask=16

Possible values:
0 -disabled
2 - send error
4 - connect error
8 - icmp (reserverd for future use)
16 - transaction timeout
32 - administratively prohibited (manually set)

12 years agoblst: global config variables for ignoring blacklist events
Andrei Pelinescu-Onciul [Mon, 15 Feb 2010 20:37:28 +0000 (21:37 +0100)]
blst: global config variables for ignoring blacklist events

Blacklist events can now be ignored on a per protocol basis, by
setting the corresponding new config variable:

E.g.: sercmd cfg.set_now_int core dst_blacklist_tcp_imask 6
 (ignore send and connect errors on tcp when deciding whether or
  not to blacklist)

12 years agoblst: docs for blst_{set,clear}_ignore script functions
Andrei Pelinescu-Onciul [Wed, 23 Dec 2009 17:13:35 +0000 (18:13 +0100)]
blst: docs for blst_{set,clear}_ignore script functions

12 years agoblst: functions for ignoring blacklist events
Andrei Pelinescu-Onciul [Wed, 23 Dec 2009 17:07:36 +0000 (18:07 +0100)]
blst: functions for ignoring blacklist events

Added blst_set_ignore(), blst_rpl_set_ignore(),
blst_clear_ignore() and blst_rpl_clear_ignore() script functions.
blst_set_ignore() and blst_rpl_set_ignore() will ignore certain
errors when deciding whether or not to blacklist the destination
of the current message or a local reply to the current message.
blst_clear_ignore() and blst_rpl_clear_ignore() will reset the
ignore flags set using blst_set_ignore() or blst_rpl_set_ignore().

12 years agoblst: use dst_blacklist_force_add
Andrei Pelinescu-Onciul [Wed, 23 Dec 2009 10:47:00 +0000 (11:47 +0100)]
blst: use dst_blacklist_force_add

- use dst_blacklist_force_add (skip over ignore masks checks)
- porperly init dest_info structs

12 years agotm: simplified blacklist add code
Andrei Pelinescu-Onciul [Wed, 23 Dec 2009 10:44:45 +0000 (11:44 +0100)]
tm: simplified blacklist add code

12 years agoblacklist: ignore mask support
Andrei Pelinescu-Onciul [Wed, 23 Dec 2009 08:44:12 +0000 (09:44 +0100)]
blacklist: ignore mask support

- a blacklist ignore mask (part of the send flags) is now
  supported by the blacklist functions
- blacklist add functions don't require anymore checking if the
  blacklist is enabled
- added dst_blacklist_force_add_to() and dst_blacklist_force_su_to()
- updated to the changed dst_blacklist_su()
- a tcp connection send_flags and blacklist ignore mask are
  inherited from the packet that opens the connection
- updated to the changed dst_blacklist_su()

12 years agotm: updated to the new snd_flags_t structure
Andrei Pelinescu-Onciul [Thu, 17 Dec 2009 12:29:50 +0000 (13:29 +0100)]
tm: updated to the new snd_flags_t structure

12 years agocore: send_flags preliminary blacklist support
Andrei Pelinescu-Onciul [Thu, 17 Dec 2009 07:39:53 +0000 (08:39 +0100)]
core: send_flags preliminary blacklist support

- send_flags_t contains now also a blacklist ignore mask (changed
  to a structure).

12 years agomakefile: fix make bin & basedir
Andrei Pelinescu-Onciul [Mon, 14 Dec 2009 23:58:14 +0000 (00:58 +0100)]
makefile: fix make bin &  basedir

- make bin and make sunpkg fixed (basedir was not an absolute
- auto-transform basedir to an absolute path if it does not start
  with '/'
- fix unexported makefile_defs, after loading the config in the
  main Makefile

12 years agocore: fix parsing for avps with the same name as a pv class
Andrei Pelinescu-Onciul [Mon, 14 Dec 2009 12:00:07 +0000 (13:00 +0100)]
core: fix parsing for avps with the same name as a pv class

When a pv lookup fails, sometimes the pvspec is partially filled
which, if not clean might mess-up the avp flags in the lval union.
E.g.: $avp="..." caused problems (avp was marked as RE name).

12 years agocore: use NAME to build User-Agent and Server headers
Daniel-Constantin Mierla [Fri, 11 Dec 2009 09:29:06 +0000 (10:29 +0100)]
core: use NAME to build User-Agent and Server headers
(cherry picked from commit e1c36fdfc9b8f30a4271ee6823a2288dcf9c3833)

12 years agocore: fix define of rval_get_int_handle_ret
Daniel-Constantin Mierla [Fri, 11 Dec 2009 09:29:50 +0000 (10:29 +0100)]
core: fix define of rval_get_int_handle_ret
(cherry picked from commit a75b03f72e42740b410815330c895f16368895bd)

12 years agocore: mod fixup spve_uint and spve_str fix
Andrei Pelinescu-Onciul [Fri, 11 Dec 2009 10:33:57 +0000 (11:33 +0100)]
core: mod fixup spve_uint and spve_str fix

fixup_spve_uint() and fixup_spve_str() wrongly converted the
second parameter to a spve instead of an int or str.

Reported-by: Daniel-Constantin Mierla <>
12 years agotm: onreply_route executed under lock to protect the avps
Andrei Pelinescu-Onciul [Thu, 10 Dec 2009 17:35:17 +0000 (18:35 +0100)]
tm: onreply_route executed under lock to protect the avps

Quick fix for the onreply_route possible avp corruption: execute
the onreply route under lock.

12 years agomodule groups: add k modules to the presence group
Andrei Pelinescu-Onciul [Wed, 9 Dec 2009 10:08:18 +0000 (11:08 +0100)]
module groups: add k modules to the presence group

- added kamailio modules to the presence group:
  presence presence_dialoginfo presence_mwi presence_xml
  pua pua_bla pua_dialoginfo pua_mi pua_usrloc pua_xmpp
  rls xcap_client.
- removed obsoleted ser presence modules: pa rls.

12 years agorls(s): obsoleted
Andrei Pelinescu-Onciul [Wed, 9 Dec 2009 09:59:28 +0000 (10:59 +0100)]
rls(s): obsoleted

Moved pa to obsolete/ because it does not compile (needs upgrade
to the current DB libs) and it does not have a maintainer.

12 years agopa(s): obsoleted
Andrei Pelinescu-Onciul [Wed, 9 Dec 2009 09:53:51 +0000 (10:53 +0100)]
pa(s): obsoleted

Moved pa to obsolete/ because it does not compile (needs upgrade
to the current DB libs) and it does not have a maintainer.

12 years agomodules_k/registrar: Removed tcp_persistent_flag module parameter.
Juha Heinanen [Wed, 9 Dec 2009 08:19:54 +0000 (10:19 +0200)]
modules_k/registrar: Removed tcp_persistent_flag module parameter.

- Commented out tcp_persistent_flag module parameter, because sr_3.0 tm
  does not support it.
- Removed the flags also from module README.

12 years agomakefiles: clean-utils and proper-utils fix
Andrei Pelinescu-Onciul [Fri, 4 Dec 2009 17:16:25 +0000 (18:16 +0100)]
makefiles: clean-utils and proper-utils fix

- clean-utils and proper-utils now work both from the main
  directory (for utils compiled by make utils or installed by make
  install-utils) and from the modules directories (for utils
  installed by a module)
- make utils now works in module directories (compiles utils that
  would be installed by the module)

12 years agosercmd: fix LIBS when installing from a module
Andrei Pelinescu-Onciul [Fri, 4 Dec 2009 16:39:46 +0000 (17:39 +0100)]
sercmd: fix LIBS when installing from a module

Don't rely on LIBS having a valid value, since we might get called
from a module Makefile. Use needed libs in function of $(OS).

12 years agocore: pid_t warning fixes for solaris
Andrei Pelinescu-Onciul [Thu, 3 Dec 2009 01:15:36 +0000 (20:15 -0500)]
core: pid_t warning fixes for solaris

12 years agoctl: fix #includes on solaris
Andrei Pelinescu-Onciul [Thu, 3 Dec 2009 01:14:54 +0000 (20:14 -0500)]
ctl: fix #includes on solaris

12 years agoparser: fix for solaris yacc compatibility
Andrei Pelinescu-Onciul [Thu, 3 Dec 2009 01:12:40 +0000 (20:12 -0500)]
parser: fix for solaris yacc compatibility

%prec was used in a wrong way (not at the end of the rule),
causing problems with some yacc implementations.

12 years agomakefile: fix assembler detection on solaris
Andrei Pelinescu-Onciul [Thu, 3 Dec 2009 01:07:13 +0000 (20:07 -0500)]
makefile: fix assembler detection on solaris

Assembler test waited forever for input (missing /dev/null input
redirection for as -V).

12 years agopresence(k): fix off-by-one memory allocation
Andrei Pelinescu-Onciul [Mon, 30 Nov 2009 11:29:20 +0000 (12:29 +0100)]
presence(k): fix off-by-one memory allocation

Due to some missing '()' ( (...)?resource.len:event.len + 1
instead of ((...)?resource.len:event.len) + 1 ) sometimes the
memory allocated was less with one byte then what was needed.
The fixed version also replaces ?: with MAX_unsigned() (does the
same thing and it's easier to read).

Reported-by: Andres Moya andres.moya.i gmail com
12 years agosctp: fix cfg.set_delayed* setting some config options immediately
Andrei Pelinescu-Onciul [Mon, 30 Nov 2009 11:02:37 +0000 (12:02 +0100)]
sctp: fix cfg.set_delayed* setting some config options immediately

- all the runtime cfg options that involve setting socket options
  are now set using a per-child cfg callback with
  CFG_CB_ONLY_ONCE and not in the value fixup function. This fixes
  cfg.set_delayed* (up until now it did set these options
  immediately and not after cfg.commit).
- init_max_timeo valid range fixed (from 0-1024 to 0-2^30).

12 years agoscript engine: verbose conversion-to-int errors
Andrei Pelinescu-Onciul [Mon, 16 Nov 2009 18:41:02 +0000 (19:41 +0100)]
script engine: verbose conversion-to-int errors

- more verbose errors (all of them contain now the config file
  position for the error).
- integer conversion errors will now by default log a warning
  message. Like before they won't cause the expression evaluation
  to fail, they'll just evaluate the failed conversion to 0.
  The behaviour can be changed using the defines at the top of
  rvalue.c. To restore the old behaviour (no int conversion error
  message and error ignored), comment out the following defines:
  RVAL_GET_INT_ERR_IGN. For more info see the comments in the

12 years agoxlog(k): updated log levels
Daniel-Constantin Mierla [Fri, 6 Nov 2009 20:51:47 +0000 (21:51 +0100)]
xlog(k): updated log levels

- new level L_BUG
- updated the documentation to match the code
- L_CRIT uses in the code L_CRIT2
- L_CRIT2 can be used in config as well, detection is based on the third
- credits to Klaus Darilion
(cherry picked from commit 42d70e2e4826be99a063a3d900b167a62ae12985)

12 years agodialog(k): set dlg context after pre script callback
Daniel-Constantin Mierla [Fri, 6 Nov 2009 12:57:22 +0000 (13:57 +0100)]
dialog(k): set dlg context after pre script callback

- applies for the case of timeout route
- the prescript callback resets it otherwise
- reported by Nathan Angelacos, SF svn # 5927
(cherry picked from commit 1efaa9c19279a5dded570fb60621b45191d46027)

12 years agopv: reset local var for tobody trans
Daniel-Constantin Mierla [Fri, 6 Nov 2009 12:45:16 +0000 (13:45 +0100)]
pv: reset local var for tobody trans

- from SF svn, #5951
(cherry picked from commit d4a1d5146773eac1d82b8abb39747cc8ec427801)

12 years agoremove some modules from excluded_modules list
Daniel-Constantin Mierla [Fri, 6 Nov 2009 12:33:03 +0000 (13:33 +0100)]
remove some modules from excluded_modules list

- they compile and were K default
(cherry picked from commit 93b42945ad2a57c84626cdd08ec40aa17c06036d)

12 years agorls(k): set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:30:31 +0000 (12:30 +0100)]
rls(k): set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit dfefc8a15e9b059cf16d4930d12437948307568a)

12 years agopua(k): : set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:30:18 +0000 (12:30 +0100)]
pua(k): : set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit ab31636c85552d48610c65d65afd4eaa126cf6a0)

12 years agojabber(k): : set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:30:02 +0000 (12:30 +0100)]
jabber(k): : set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit 2e88092d23443985f7d8459c2815cf91f68d752e)

12 years agoimc(k): : set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:29:48 +0000 (12:29 +0100)]
imc(k): : set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit 9eb765ffc7f6e9eac99b7f998b37f56338d8c285)

12 years agopresence(k): : set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:29:31 +0000 (12:29 +0100)]
presence(k): : set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit 598aea444e9f8b2a1c610daa363723e2d38496b7)

12 years agodialog(k): : set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:29:09 +0000 (12:29 +0100)]
dialog(k): : set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit 0bcc7d5f76ec897f748857befbbdcdc265d0b970)

12 years agodispatcher(k): set callback type for local requests
Daniel-Constantin Mierla [Fri, 6 Nov 2009 11:27:44 +0000 (12:27 +0100)]
dispatcher(k): set callback type for local requests

- type has to be TMCB_LOCAL_COMPLETED to execute transaction callback
(cherry picked from commit 58c75326614ccc3805640c2a15d95b4ad5e8e6d4)

12 years ago* modules_k/nathelper
Juha Heinanen [Sun, 15 Nov 2009 22:45:27 +0000 (00:45 +0200)]
* modules_k/nathelper

Added two new functions add_contact_alias() and handle_ruri_alias() and
two new pseudo variables $rr_count and $rr_top_count that can be used to
implement tcp connection sharing and produce correct Request URI for
in-dialog requests to NATed UAs.

12 years agoprint the cfg file in fixup error message
Daniel-Constantin Mierla [Sun, 15 Nov 2009 13:32:40 +0000 (14:32 +0100)]
print the cfg file in fixup error message

- line is not enough when include_file is used

12 years agoprint line for fixing action error
Daniel-Constantin Mierla [Sun, 15 Nov 2009 11:51:27 +0000 (12:51 +0100)]
print line for fixing action error

- reported by Juha Heinanen

12 years agocore rpc: core.shmmem can take an optional size parameter
Andrei Pelinescu-Onciul [Thu, 12 Nov 2009 16:24:27 +0000 (17:24 +0100)]
core rpc: core.shmmem can take an optional size parameter

core.shmmem can take now an optional size parameter, which can
have one of the following values: b - bytes, k or kb - kilobytes,
m or mb - megabytes, g or gb - gigabytes. By default (no
parameter) the values displayed are in bytes. Note that when using
something different from bytes the value are truncated (no
floating point).
The new parameter can be used as workaround on 64 bits systems
when sr is started with more then 2Gb of memory (due to the RPC
interface limitation to int32 in this case the values displayed
would be negative or 0).
sercmd> core.shmmem k

12 years agosctp rpc: core.sctp_options debugging version
Andrei Pelinescu-Onciul [Thu, 12 Nov 2009 15:29:40 +0000 (16:29 +0100)]
sctp rpc: core.sctp_options debugging version

core.sctp_options can now have 1 optional parameter. If the
parameter is missing it works as before: displays ser's idea of
all the sctp config options. If the parameter is present it should
have one of the following values: "default" (default send socket),
"first" (first sctp socket) or  addr[:port]. In this case the
kernel sctp options for that particular socket will be displayed,
with 0 used for the options that are userspace only.
E.g.:  sercmd core.sctp_options

12 years agosctp: workaround SCTP_DELAYED_SACK lksctp typo
Andrei Pelinescu-Onciul [Thu, 12 Nov 2009 15:24:08 +0000 (16:24 +0100)]
sctp: workaround SCTP_DELAYED_SACK lksctp typo

- workaround typo in linux libsctp api: SCTP_DELAYED_ACK is
  used/defined instead of SCTP_DELAYED_SACK.
- to support older kernels (< 2.6.27), if setting/getting the
  socket options with SCTP_DELAYED_SACK fails, fallback to
  SCTP_DELAYED_ACK_TIME for sctp sack_delay and report an error if
  the user tries to set sack_freq (not supported on older
- split sctp_get_os_default() into sctp_get_os_default() and
  sctp_get_cfg_from_sock() for debugging purposes.

12 years agomodules/lcr: use append_branch instead of do_action for appending branch
Juha Heinanen [Thu, 12 Nov 2009 06:11:57 +0000 (08:11 +0200)]
modules/lcr: use append_branch instead of do_action for appending branch

For some reason appending branch using do_action had stopped working.
Instead of trying to find out why, replaced do_action() call with
append_branch() call.

12 years agodeb: fix mysql scripts install path problem
Klaus Darilion [Wed, 11 Nov 2009 18:52:55 +0000 (19:52 +0100)]
deb: fix mysql scripts install path problem

Signed-off-by: Andrei Pelinescu-Onciul <>
12 years agomake: db_flatstore moved in the standard package
Klaus Darilion [Wed, 11 Nov 2009 18:47:28 +0000 (19:47 +0100)]
make: db_flatstore moved in the standard package

db_flatstore was in db_modules package and ser standard package.
I think it should be removed from db_modules packages as it does
not have any dependencies on db-libraries.

Signed-off-by: Andrei Pelinescu-Onciul <>
12 years agomsilo(k): set tm callback type for sent messages
Daniel-Constantin Mierla [Fri, 6 Nov 2009 10:42:35 +0000 (11:42 +0100)]
msilo(k): set tm callback type for sent messages

- otherwise the callback is not executed when transaction completes
- delivered messages were not deleted from db
- reported by Juha Heinanen
(cherry picked from commit d8dde2fe2e7004c69a6241a054c5febe73548267)

12 years agocore: added id to every field of gw table schema
Juha Heinanen [Fri, 6 Nov 2009 03:58:59 +0000 (05:58 +0200)]
core: added id to every field of gw table schema

12 years agotcp: use the forced socket ip as source
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 15:21:35 +0000 (16:21 +0100)]
tcp: use the forced socket ip as source

- if a socket is forced always use the forced socket ip as source
 (if a connection exists with different ip as source, open a new
 one with the forced ip).

12 years agotmx: pv_t_copy_msg: copy also the send flags
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:19:29 +0000 (15:19 +0100)]
tmx: pv_t_copy_msg: copy also the send flags

12 years agotextops(k): msg_apply_changes: preserve the send flags
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:17:56 +0000 (15:17 +0100)]
textops(k): msg_apply_changes: preserve the send flags

- restore also the msg send flags

12 years agoseas: use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:17:15 +0000 (15:17 +0100)]
seas: use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agorr(k): use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:16:44 +0000 (15:16 +0100)]
rr(k): use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agoregistrar(k): use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:16:05 +0000 (15:16 +0100)]
registrar(k): use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agopv: use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:15:33 +0000 (15:15 +0100)]
pv: use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agokex: use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:14:31 +0000 (15:14 +0100)]
kex: use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agodomainpolicy: use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:13:36 +0000 (15:13 +0100)]
domainpolicy: use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agorr(s): use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:12:52 +0000 (15:12 +0100)]
rr(s): use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agoregistrar(s): use set_force_socket()
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 14:11:53 +0000 (15:11 +0100)]
registrar(s): use set_force_socket()

- use set_force_socket() instead of msg->force_send_socket

12 years agotm: use set_force_socket() instead of msg->force_send_socket
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 13:53:55 +0000 (14:53 +0100)]
tm: use set_force_socket() instead of msg->force_send_socket

12 years agotm: preserve forced sockets and send flags during dns failover
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 13:48:41 +0000 (14:48 +0100)]
tm: preserve forced sockets and send flags during dns failover

- fix for branches introduced as a result of dns failover not
  preserving the forced send socket.
- dns failover branches now preserve also the original branch send

12 years agocore: extra flag when forcing a socket
Andrei Pelinescu-Onciul [Thu, 5 Nov 2009 13:43:38 +0000 (14:43 +0100)]
core: extra flag when forcing a socket

- when forcing a socket set an extra send flag
  (SND_F_FORCE_SOCKET), so that later we can tell if the socket in
  the dst structure was forced or not (useful for forcing a
  specific source ip on tcp or for keeping the forced socket
  during dns failover in tm).
- added set_force_socket(msg, sock) and reset_force_socket(msg)
  macros that should be used instead of directly setting
  msg->force_send_socket (they take care of any extra work, like
  setting/resetting flags).

12 years agocore: kamailio mode config parser fix
Andrei Pelinescu-Onciul [Mon, 2 Nov 2009 14:35:42 +0000 (15:35 +0100)]
core: kamailio mode config parser fix

- fixed bug in parsing pvars without (), when in #!KAMAILIO mode

Reported-by: Daniel-Constantin Mierla <>
12 years agocore: PAI and PPI parsing support fixed
Daniel-Constantin Mierla [Sun, 1 Nov 2009 13:06:04 +0000 (14:06 +0100)]
core: PAI and PPI parsing support fixed

- use a new function to identify hdr type instead of 'case' construct
- reported by Juha Heinanen
(cherry picked from commit 78f069c3726085902101a55d3bb98f0be7549b60)

12 years agocore: dset minor cleanups
Andrei Pelinescu-Onciul [Sat, 31 Oct 2009 09:31:18 +0000 (10:31 +0100)]
core: dset minor cleanups

- get_request_uri() is now inline and uses GET_RURI
- DBG msg removed

12 years agocore: append_branch() sets also the send_socket, path & flags
Andrei Pelinescu-Onciul [Sat, 31 Oct 2009 09:27:43 +0000 (10:27 +0100)]
core: append_branch() sets also the send_socket, path & flags

- the script append_branch() sets also the new branch send_socket
 (if forced), path vector and branch flags, making it more
 compatible with the kamailio version.

Reported-by: Juha Heinanen jh at tutpro com
12 years agoremove extra backslash in make modules-doc action
Daniel-Constantin Mierla [Fri, 30 Oct 2009 21:38:21 +0000 (22:38 +0100)]
remove extra backslash in make modules-doc action
(cherry picked from commit f4cb4afc8173e209dbd7a6a522d3b10cc8c5c0ef)

12 years agocore: re-initialize branch 0 flags for each new message
Andrei Pelinescu-Onciul [Sat, 31 Oct 2009 06:44:03 +0000 (07:44 +0100)]
core: re-initialize branch 0 flags for each new message

Fixes branch 0 flags being "remembered" from previous script

Reported-by: Juha Heinanen jh at tutpro com
12 years agotm: fix branches clearing lumps
Andrei Pelinescu-Onciul [Fri, 30 Oct 2009 14:19:42 +0000 (15:19 +0100)]
tm: fix branches clearing lumps

- fix bug introduced in 610cb93

12 years agofix typo in location flags settings
Daniel-Constantin Mierla [Fri, 30 Oct 2009 10:47:52 +0000 (11:47 +0100)]
fix typo in location flags settings

- cflags must be used when saving branch flags
(cherry picked from commit 7a967915ce71ab4e8b6577b4ed48e2a93ae6e96f)

12 years agoRewritten this small helper function
Marius Zbihlei [Tue, 27 Oct 2009 11:26:55 +0000 (13:26 +0200)]
Rewritten this small helper function
(cherry picked from commit 4fed4c7b9db9ca8ad1b034d5afbd86fea4ebd6ba)

12 years agoWhen string was in the form of 0=on\n\0 this function caused a segmentation fault...
Marius Zbihlei [Mon, 26 Oct 2009 15:16:37 +0000 (17:16 +0200)]
When string was in the form of 0=on\n\0 this function caused a segmentation fault(canaries where overwritten).
(cherry picked from commit e6f4dafdc43d90e9679ad4695e9729379245984d)

12 years agoRemoved unused var (added last commit)
Marius Zbihlei [Mon, 26 Oct 2009 12:23:25 +0000 (14:23 +0200)]
Removed unused var (added last commit)
(cherry picked from commit 60548b6b3475d82e5d4d8c9a4be53c8dfb32df5e)

12 years agoFixed avpops avp_db_store as before no state was used and it caused to loop endessly.
Marius Zbihlei [Mon, 26 Oct 2009 11:37:43 +0000 (13:37 +0200)]
Fixed avpops avp_db_store as before no state was used and it caused to loop endessly.
(cherry picked from commit ffca34a67b64079cf66a0d4c0cd5419fff3f2255)

12 years agoDeclared pua_send_publish ,as it was only defined (extern)
Marius Zbihlei [Thu, 22 Oct 2009 13:32:43 +0000 (16:32 +0300)]
Declared pua_send_publish ,as it was only defined (extern)
(cherry picked from commit 981e9ba6cee17268ce761ee04d35b897a0fbd47e)

12 years agoFixed tm_load import (It would be advisable to use tm_load_api instead )
Marius Zbihlei [Thu, 22 Oct 2009 13:31:35 +0000 (16:31 +0300)]
Fixed tm_load import (It would be advisable to use tm_load_api instead )
(cherry picked from commit 12d008ca184460755f09bf4090f0298d4a092e84)

12 years agoFixed include guard
Marius Zbihlei [Thu, 22 Oct 2009 13:14:06 +0000 (16:14 +0300)]
Fixed include guard
Defined pua_send_* symbols as they where not defined when module was loaded
(cherry picked from commit 3a2477ec529f87a51a6f1c0238ab8c12790b1807)

12 years agoAdded kmi module to linkage (because of ../../modules_k/xcap_client/xcap_client...
Marius Zbihlei [Thu, 22 Oct 2009 12:20:46 +0000 (15:20 +0300)]
Added kmi module to linkage (because of  ../../modules_k/xcap_client/ undefined symbol: register_mi_mod  )
(cherry picked from commit b5dd92caf75c3cc9076a0fc59149fbf80bcb0949)

12 years agoFixed carrierroute module exports.
Marius Zbihlei [Mon, 19 Oct 2009 09:46:17 +0000 (12:46 +0300)]
Fixed carrierroute module exports.
See thread for a complete description
(cherry picked from commit ca28401667bcf8d65d942fdb29033eadb6bb82b2)

12 years agoFixed userblacklist exported function
Marius Zbihlei [Mon, 19 Oct 2009 08:27:25 +0000 (11:27 +0300)]
Fixed userblacklist exported function
See thread for a complete description
(cherry picked from commit ae18879b65d1a005639559ff689657b1cc2777d8)

12 years agoIf the user parameter is "<null>" (e.g a empty username in the request URI), do not...
Marius Zbihlei [Mon, 12 Oct 2009 12:10:55 +0000 (15:10 +0300)]
If the user parameter is "<null>" (e.g a empty username in the request URI), do not copy this value to the rewritten uri.
This is the case of a REGISTER request. Added statements that the parameters to the actually_rewrite func may not be null.
(cherry picked from commit e06a69d625d4c1293fceef13f9eca22e14662f9f)

12 years agolib/srdb1/schema/gw.xml: index changes
Juha Heinanen [Thu, 29 Oct 2009 08:38:56 +0000 (10:38 +0200)]
lib/srdb1/schema/gw.xml: index changes

- Added grp_id to existing gw_name index.
- Added new ip_addr index.

12 years agomodules/lcr: bug fixes
Juha Heinanen [Thu, 29 Oct 2009 08:27:54 +0000 (10:27 +0200)]
modules/lcr: bug fixes

- Fixed selection of gateways's attributes when same gateway has different
  attributes in different groups.
- Fixed printing of gateway's tag by lcr.dump_gws.

12 years agohtable(k): fix non-init act. ctx in event route execution
Andrei Pelinescu-Onciul [Wed, 28 Oct 2009 15:11:22 +0000 (16:11 +0100)]
htable(k): fix non-init act. ctx in event route execution

- the event route was executed with an uninitialized run_act_ctx.

12 years agotm: fix/support changing r-uris and path in branch routes
Andrei Pelinescu-Onciul [Wed, 28 Oct 2009 14:50:45 +0000 (15:50 +0100)]
tm: fix/support changing r-uris and path in branch routes

- changing the r-uri in a branch route is now safe and the change
  will propagate to branches created due to dns failover.
- changing path in a branch route is now allowed and it will
  propagate to possible dns failover branches.
- optimize the no branch route & no callback case.
- build the branch buffer directly into shm mem.
- s/prepare_uac_request/prepare_new_uac/
- prepare_new_uac() takes care now also of setting the branch
  retr. buffer, uri and path (functionality moved from add_uac())

12 years agotm: support for changing dst_uri in branch routes
Andrei Pelinescu-Onciul [Wed, 28 Oct 2009 07:36:47 +0000 (08:36 +0100)]
tm: support for changing dst_uri in branch routes

- dst_uri can now be changed in branch routes, if the branch
  route is not called during dns failover (which never happens,
  but might be enabled in the future).
- dst_uri can now be checked in branch routes. The
  dst_uri on branch route entry will be the branch next hop
  (initial next hop and not the dns resolved one) if a
  t_relay() based on uri was used, or empty if a destination was
  forced (e.g. t_relay_to_udp(, 9)).
- s/print_uac_request/prepare_uac_request to better reflect what
  is actually doing
- prepare_uac_request() will now perform the DNS lookups and directly
  update the branch dst inside the transaction.
- add_uac() must now be called with a special flag during DNS
  failover (UAC_DNS_FAILOVER).

12 years agoregistrar: Fix handling of cases where contacts > max_contacts
Jan Janak [Mon, 26 Oct 2009 15:25:02 +0000 (16:25 +0100)]
registrar: Fix handling of cases where contacts > max_contacts

Registrar should not report an error to syslog if a user exceeds the
maximum number of allowed contacts per user. The registrar module sends
a reply back with a description of what happened so there is no reason
to write this to syslog, max_contacts > 0 is a configuration choice
rather than an error.

This patch also changes all affected functions in registrar module to
indicate that the maximum number of allowed contacts was exceeded by
returning a positive number, instead of a negative number to indicate
that an error occurred.

12 years agodomain: Do not report errors when domain cannot be extracted from URI.
Jan Janak [Mon, 26 Oct 2009 13:37:22 +0000 (14:37 +0100)]
domain: Do not report errors when domain cannot be extracted from URI.

We should not report an error to syslog when lookup_domain fails to
parse the URI it was given as argument. That URI usually comes from
SIP messages we received from another implementation and we cannot
guarantee that they will always be well-formed. Generating an error
each time we receive a malformed SIP message can easily result in
denial of service.

12 years agoparse_sip_msg_uri: Log broken URIs only when debugging is enabled.
Jan Janak [Mon, 26 Oct 2009 13:15:53 +0000 (14:15 +0100)]
parse_sip_msg_uri: Log broken URIs only when debugging is enabled.

Logging broken Request-URIs with LOG(L_ERR) generates too much traffic
in syslog by default. Broken Request-URIs are beyond our control and
we should not generate an error message each time we receive and parse
one. We log them only when debugging is enabled.

12 years agomodules/lcr: documentation improvement
Juha Heinanen [Fri, 23 Oct 2009 16:45:54 +0000 (19:45 +0300)]
modules/lcr: documentation improvement

- Added note to README about maximum number of gateways.

12 years agosctp: count rejects sent to the remote peer (stats)
Libor Chocholaty [Wed, 21 Oct 2009 08:09:01 +0000 (10:09 +0200)]
sctp: count rejects sent to the remote peer (stats)

It adds into sctp_handle_assoc_change() a call to
SCTP_STATS_LOCAL_REJECT() if the SCTP_ABORT is successfully sent.

Signed-off-by: Andrei Pelinescu-Onciul <>
12 years agoavp_db: Removes a spurious error message.
Jan Janak [Mon, 19 Oct 2009 23:20:23 +0000 (01:20 +0200)]
avp_db: Removes a spurious error message.

12 years agoctl: missing ifdef (minor)
Andrei Pelinescu-Onciul [Mon, 19 Oct 2009 16:01:51 +0000 (18:01 +0200)]
ctl: missing ifdef (minor)

- missing ifdef USE_FIFO prevented compilation without fifo

12 years agoevent parser: Add missing string boundary checks to event_parser func.
Jan Janak [Sun, 18 Oct 2009 18:49:39 +0000 (20:49 +0200)]
event parser: Add missing string boundary checks to event_parser func.

The function event_parser needs to check that there is still some text
left in the input string before it attempts to read the text.

In addition to that the function also needs to skip any possible
leading whitespace before it calls parse_params, because parse_params
expects that there is no leading whitespace at the beginning of the
input string.

Reported by Juha Heinanen

12 years agotm: Number of fixes in code and documentation for serial forking.
Jan Janak [Sat, 17 Oct 2009 22:39:31 +0000 (00:39 +0200)]
tm: Number of fixes in code and documentation for serial forking.

This patch improves the serial forking related code and documentation.
The original code suffers from shortcommits, some of which were result
of the migration to the new core.

The function that decodes destination sets encoded in AVPs has been
improved, because the original version did not handle properly strings
with missing elements. In such case the original implementation was
likely to overwrite memory, because it did not check the return value
of strchr properly. The new implementation tries to handle this
situation. It continues parsing as long as it can, it only requires
that the request-uri string is present, all other fields are made
optional and their variables are properly initialized if their values
cannot be found in the AVP.

There was a bug in the implementation of fr_inv_timer_next modparam in
the original version, changes to the parameter value were ignored by
the serial forking code. This was reported by Andrei and is now fixed
by this commit. The parameter fr_inv_timer_next can now be configured
at runtime with the configuration framework. Its value is in
milliseconds and unlike fr_inv_timer, this timer cannot be configured
separately for individual branches.

Obsolete definition of INV_FR_TIME_OUT_FIRST has been removed. That
macro is not used anywhere in the code, thus it is not needed.

There were several places where LM_DBG printed a string and relied on
the string being zero terminated, this may or may not be true in the
future and this patch uses the macro STR_FMT where appropriate, which
is safer.

Function t_next_contacts now checks if the function decode_branch_info
really returned values for the dst_uri and the path vector. If not then
it calls reset_dst_uri and reset_path_vector. Previous version of the
code crashed sip-router, this is likely due to the merge and updates in
the sip-router core.

We now use t_set_fr in t_next_contacts for setting the fr_inv_timer
value to fr_inv_timer_next. This is much more efficient than creating
AVPs with new timer values. Also the new value of the timer is now
taken from a variable in the configuration framework, instead of just a
regular global variable configured through modparam. This way we can
adjust the value of the timer on the fly. Configuring it through
modparam is, of course, possible too.

The value of of fr_inv_timer_next is now in milliseconds, instead of
seconds. That's the only possibly incompatible change. However, this is
consistent with all other timers in tm module, it is more efficient and
it offers better granularity.

A missing call to destroy_avp has been added to t_next_contacts, in the
code which is executed when no transaction exists. There, the avp
should also be destroyed if all values have been exhausted and none of
them had Q_FLAG set. This is a corner case which should not happen
under normal circumstances, because that situation only happens if all
branches have the same q value. Such AVP would not have been created by
t_load_contacts and therefore t_next_contacts should not be called, but
this bug may be triggered if someone uses t_next_contacts in an
unexpected way and it is probably better to have it fixed.

Also the code which restores the value of fr_inv_timer at the end of
t_next_contacts did not work properly. This patch fixes that. It first
tries to retrieve a value configured with t_set_fr, but that is not
guaranteed to succeed. After that it also tries the timer AVP and
finally the configuration framework. The configuration framework always
yields a value, so we can always restore the timer value, but we may
fail to restore individual transaction timer values set by t_set_fr. If
that fails then the global value from the configuration framework is
used. This is documented as a shortcomming in the README and in the

In addition to code changes this patch also expands documentation on
functions t_load_contacts and t_next_contacts, describing their
operation in more detail. Also the format of the contacts AVP is now

Finally, there is a whole new section in the README which describes
how serial/parallel forking can be achieved with t_load_contacts and
t_next_contacts and provides a number of examples.

12 years agoImplements function reset_path_vector.
Jan Janak [Sat, 17 Oct 2009 17:36:20 +0000 (19:36 +0200)]
Implements function reset_path_vector.

This function can be used to reset the path_vec variable that stores
the path vector for a SIP message. It can be used just like