10 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).

10 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

10 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

10 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.

10 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).

10 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
10 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).

10 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

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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.

10 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

10 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

10 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

10 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

10 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.

10 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.

10 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 <>
10 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 <>
10 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)

10 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

10 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).

10 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

10 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

10 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

10 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

10 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

10 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

10 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

10 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

10 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

10 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

10 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

10 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

10 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).

10 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 <>
10 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)

10 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

10 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
10 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)

10 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
10 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

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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)

10 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.

10 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.

10 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.

10 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())

10 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).

10 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.

10 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.

10 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.

11 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.

11 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 <>
11 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.

11 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

11 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

11 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.

11 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

11 years agocore: fix fixup_spve_* reuse after free
Andrei Pelinescu-Onciul [Thu, 15 Oct 2009 15:58:05 +0000 (17:58 +0200)]
core: fix fixup_spve_* reuse after free

- fixup_spve_* functions have an optimization that checks if a
a parsed format is a simple string and if this happens it frees
the fixed param an re-does the fixup with type==string.
However when freeing the result of the first fixup the original
string was freed too and the next string fixup would be
called with freed memory instead of a valid string.
(this bug was hidden before the memleak fix in af8f3e1536d)

11 years agoRemove obsolete gen_ha1.
Jan Janak [Thu, 15 Oct 2009 10:19:29 +0000 (12:19 +0200)]
Remove obsolete gen_ha1.

The tool gen_ha1 is not needed anymore. It was used by an old version
of the script serctl. The same functionality can be achieved by other
means either on the command line or in MySQL with server-side commands.

11 years agomodules_k/permissions: Increased version number of 'trusted' table
Juha Heinanen [Thu, 15 Oct 2009 09:47:01 +0000 (12:47 +0300)]
modules_k/permissions: Increased version number of 'trusted' table

- Increased version number of 'trusted' table also in code so that it
  matches the one in db.

11 years agolib/srdb1/schema/trusted.xml: forgot to increase version number
Juha Heinanen [Wed, 14 Oct 2009 12:39:15 +0000 (15:39 +0300)]
lib/srdb1/schema/trusted.xml: forgot to increase version number

- Forgot to increase version number of trusted table after increasing
  size of tag field.

11 years agolib/srdb1/schema/trusted.xml: increased tag length from 32 to 64 chars
Juha Heinanen [Wed, 14 Oct 2009 12:27:00 +0000 (15:27 +0300)]
lib/srdb1/schema/trusted.xml: increased tag length from 32 to 64 chars

11 years agomakefile: support self-installing utils, extra cfgs a.s.o.
Andrei Pelinescu-Onciul [Tue, 13 Oct 2009 19:58:56 +0000 (21:58 +0200)]
makefile: support self-installing utils, extra cfgs a.s.o.

- support for self-installing utils, they just need to be added to
- support for extra installed config, they just need to be added
  to C_INSTALL_CFGS. Module paths inside them will be fixed
  automatically if they are of the form /usr/*lib/modules*/.
- utils_compile renamed into C_COMPILE_UTILS
- utils_bin_install renamed into C_INSTALL_BIN
- utils_script_install renamed into C_INSTALL_SCRIPTS
- share_install renamed into C_INSTALL_SHARE

11 years agocore: fix memleak in fixup_free*
Andrei Pelinescu-Onciul [Tue, 13 Oct 2009 18:11:25 +0000 (20:11 +0200)]
core: fix memleak in fixup_free*

fparam_free_contents() (which is what all the fixup_free* call in
sr) did not free the original string (which in sr is kept inside
 the fixed fparam/gparam).
It should have no impact, since at this point nobody seems to use
 any fixup_free* functions.

11 years agocore: fix cfg_update() on config error 2nd try
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 19:20:02 +0000 (21:20 +0200)]
core: fix cfg_update() on config error 2nd try

The cfg framework is considered initialized only after
the cfg_child_cb_no_init() call.
Fixes 29e63735632a379df5d6b49130d05d47e2829a60.

11 years agouserblacklist(k): gcc 2.95 compile fixes
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 16:08:29 +0000 (18:08 +0200)]
userblacklist(k): gcc 2.95 compile fixes

- variables must be declared at the beginning of a block

11 years agostatistics(k): minor warning in printf fmt
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 16:07:15 +0000 (18:07 +0200)]
statistics(k): minor warning in printf fmt

11 years agosiputils(k): gcc 2.95 compile fixes
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 16:06:35 +0000 (18:06 +0200)]
siputils(k): gcc 2.95 compile fixes

- variables must be declared at the beginning of a block

11 years agoregistrar(k): gcc 2.95 compile fixes
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 16:05:33 +0000 (18:05 +0200)]
registrar(k): gcc 2.95 compile fixes

- variables must be declared at the beginning of a block

11 years agopua_mi: gcc 2.95 compile fixes
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 16:04:30 +0000 (18:04 +0200)]
pua_mi: gcc 2.95 compile fixes

- variables must be declared at the beginning of a block

11 years agocfgutils(k): gcc 2.95 compile fixes
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 16:03:48 +0000 (18:03 +0200)]
cfgutils(k): gcc 2.95 compile fixes

- variables must be declared at the beginning of a block

11 years agolcr: compile & warning fixes for gcc 2.95
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 14:45:27 +0000 (16:45 +0200)]
lcr: compile & warning fixes for gcc 2.95

- variables must be declared at the beginning of a block

11 years agodb_postgres: compile fixes for gcc 2.95
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 14:43:33 +0000 (16:43 +0200)]
db_postgres: compile fixes for gcc 2.95

- variables must be declared at the beginning of a block
- #ifdefs not allowed in macro arguments

11 years agodb_mysql: compile fix for gcc 2.95
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 14:41:32 +0000 (16:41 +0200)]
db_mysql: compile fix for gcc 2.95

- variables must be declared at the beginning of a block

11 years agocompile: don't warn on old gcc versions
Andrei Pelinescu-Onciul [Mon, 12 Oct 2009 14:39:38 +0000 (16:39 +0200)]
compile: don't warn on old gcc versions

11 years agoutils/sercmd: Fixed include paths also in sr_3.0 branch.
Juha Heinanen [Sat, 10 Oct 2009 11:50:23 +0000 (14:50 +0300)]
utils/sercmd: Fixed include paths also in sr_3.0 branch.

11 years agoversion number increased
Andrei Pelinescu-Onciul [Sat, 10 Oct 2009 00:51:13 +0000 (02:51 +0200)]
version number increased

- preparing for the sr_3.0 branch

11 years agocall_control(k): fix register_script_cb callback
Andrei Pelinescu-Onciul [Sat, 10 Oct 2009 00:23:24 +0000 (02:23 +0200)]
call_control(k): fix register_script_cb callback

- sip-router script _cb take an extra parameter

11 years agomakefile: minor makecfg.lst fix
Andrei Pelinescu-Onciul [Sat, 10 Oct 2009 00:21:59 +0000 (02:21 +0200)]
makefile: minor makecfg.lst fix

- better escaping when saving the current DEFS and INCLUDES