sip-router
10 years agocore: MATCH op fix for ip comparisons with RVEs
Andrei Pelinescu-Onciul [Fri, 18 Jun 2010 21:04:24 +0000 (23:04 +0200)]
core: MATCH op fix for ip comparisons with RVEs

Commit e085834 broke regular expression support in ip comparisons
with rval expressions (e.g. $re="127\..*"; if (src_ip=~$re) ...).

10 years agocore: fix selects in optimized rvalue expressions
Andrei Pelinescu-Onciul [Fri, 18 Jun 2010 20:22:59 +0000 (22:22 +0200)]
core: fix selects in optimized rvalue expressions

- do not attempt to resolve_select() twice the same select. This
  happened when a rve containing only a select was optimized,
  the select moved out of the rve and fix_expr() tried to "fix"
  the already resolved select later.
- changed BUG() messages for failed resolve_select() into ERR().

10 years agocore: network addresses in ip rve comparisons
Andrei Pelinescu-Onciul [Fri, 18 Jun 2010 20:13:01 +0000 (22:13 +0200)]
core: network addresses in ip rve comparisons

ip address comparison with rvalue expressions support now
 network type addresses (ip/mask).
 E.g.:
    $net = "10.0.0.0"
    $mask = "255.0.0.0"
    if (src_ip == $net+"/"+$mask)
        ....

10 years agocore: functions for parsing a network address
Andrei Pelinescu-Onciul [Fri, 18 Jun 2010 20:03:46 +0000 (22:03 +0200)]
core: functions for parsing a network address

- added mk_net_str(): initialize a struct net from a string of the
  form ip/mask, ip/bitlen or ip
- renamed mk_net() and mk_net_bitlen() to  mk_new_net() and
  mk_new_net_bitlen()

10 years agomodules/lcr: fixed bsearch argument plus doc improvements
Juha Heinanen [Thu, 17 Jun 2010 10:03:35 +0000 (13:03 +0300)]
modules/lcr: fixed bsearch argument plus doc improvements

- First bsearch argument must be of type struct gw_info.
- README improvements.

10 years agodns_cache: reply the rpc command only once
Miklos Tirpak [Wed, 16 Jun 2010 14:52:04 +0000 (16:52 +0200)]
dns_cache: reply the rpc command only once

10 years agodns_cache: remove unused err_flags variable
Miklos Tirpak [Wed, 16 Jun 2010 14:09:31 +0000 (16:09 +0200)]
dns_cache: remove unused err_flags variable

err_flags is deleted from the dns_rr structure.
This flag was checked sometimes, but its value was never
set. Anyway, this flag contained duplicated information
because the parent structure, dns_hash_entry, has a similar
flag (ent_flags & DNS_FLAG_BAD_NAME). And a single hash
entry cannot contain both positive and negative resource
records at the same time.

10 years agodns_cache: minor fix, goto instead of break
Miklos Tirpak [Wed, 16 Jun 2010 14:04:16 +0000 (16:04 +0200)]
dns_cache: minor fix, goto instead of break

Exit from the main look when no number of entries
has already been processed in dns_cache_clean()

10 years agodns_cache: added support for permanent entries
Miklos Tirpak [Wed, 16 Jun 2010 13:49:24 +0000 (15:49 +0200)]
dns_cache: added support for permanent entries

Permanent entries are intended to be used for management
purposes, i.e. they are useful if there is no DNS server
available for instance. Such entries never expire, and overwrite
any existing entry that was added by the resolver.
They can be added to the cache from modules or over the RPC calls
dns.add_a, dns.add_aaaa and dns.add_srv with the flag value of 2.
(or 3 in case of negative permanent entry)

- err_flags in struct dns_hash_entry is changed to be a general
purpose flag, and renamed to ent_flag.
- DNS_BAD_NAME is renamed to DNS_FLAG_BAD_NAME
- DNS_FLAG_PERMANENT value is added.
- new rpc call to force deleting the permanent entries from the
cache: dns.delete_all_force. (dns.delete_all deletes only
the non-permanent entries.)

10 years agodns_cache: dns_cache_delete_single_record() added
Miklos Tirpak [Tue, 15 Jun 2010 08:15:46 +0000 (10:15 +0200)]
dns_cache: dns_cache_delete_single_record() added

The function deletes a single resource record
of an existing DNS entry. If the entry has only one
record then the entire entry is deleted.

The resource record is identified by its name, type,
and value, i.e. ip addres in case of A/AAAA record,
target name in case of SRV record.

Only A, AAAA, and SRV records are supported.

10 years agoAlways set data payload to NULL, thus avoiding problems when root node had data assoc...
Marius Zbihlei [Wed, 16 Jun 2010 11:11:48 +0000 (14:11 +0300)]
Always set data payload to NULL, thus avoiding problems when root node had data associated with it
Credits for the patch go to Henning Westerholt.

10 years agomakefile: quiet output by default
Andrei Pelinescu-Onciul [Tue, 15 Jun 2010 15:26:07 +0000 (17:26 +0200)]
makefile: quiet output by default

Quiet output is used now by default. For verbose output one can
either add Q=0 /Q=no/ Q=verbose to the make command line
(e.g. make Q=verbose all) or for a more permanent solution one can
run make config with Q set (e.g. make config Q=0).

10 years agocfg parsing: disable non constant rval in ip comparison warning
Andrei Pelinescu-Onciul [Tue, 15 Jun 2010 15:00:51 +0000 (17:00 +0200)]
cfg parsing: disable non constant rval  in ip comparison warning

Reported-by: Steven C. Blair blairs isc upenn edu
10 years agocore: futexlock compilation workaround for OpenSuse 10.2
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 17:11:59 +0000 (19:11 +0200)]
core: futexlock compilation workaround for OpenSuse 10.2

In some older linux distributions /usr/include/futex.h uses a __user
attribute, which is defined in linux/compiler.h.
However linux/compiler.h is not part of the kernel headers package in most
recent distributions. Instead they ship a modified linux/futex.h that
 does not include <linux/compile.h> and does not use __user.
"__user" is used only for checking  pointer address space in the kernel
(using the sparse tool and make C=1 or make C=2) so it's safe to define
it as null/empty.

Reported-by: Alexandr Dubovikov shurik start4 info
10 years agodbg(s): remove module, as its functionality is also provided from cfgutils
Henning Westerholt [Tue, 15 Jun 2010 10:30:32 +0000 (12:30 +0200)]
dbg(s): remove module, as its functionality is also provided from cfgutils

remove the dbg module, its functionality can be provided from cfgutils:
  - dbg_msleep(n) -> usleep(n*1000)
  - dbg_abort() -> abort()
  - dbg_pkg_status() -> pkg_status()
  - dbg_shm_status() -> shm_status()

10 years ago*_radius(s): doc: update to the new doc makefile format
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 15:30:26 +0000 (17:30 +0200)]
*_radius(s): doc: update to the new doc makefile format

Update the doc makefiles for auth_radius, avp_radius and
uri_radius.

10 years agoauth_*(s): updated auth_api and header file name
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 15:25:05 +0000 (17:25 +0200)]
auth_*(s): updated auth_api and header file name

Changed auth_api_t to auth_api_s_t and bind_auth to bind_auth_s in
all the auth(s) using modules.
Updated also the auth/api.h path to contain modules_s (safer if
the modules will be moved).

10 years agoauth_*(k): updated auth_api and header file name
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 15:22:01 +0000 (17:22 +0200)]
auth_*(k): updated auth_api and header file name

Changed auth_api_t to auth_api_k_t and bind_auth to bind_auth_k in
 all the auth(k) using modules.
Updated also the auth/api.h path to contain modules_k (safer if
the modules will be moved).

10 years agoauth(k): s/auth_api/auth_api_k & s/bind_auth/bind_auth_k
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 15:15:50 +0000 (17:15 +0200)]
auth(k): s/auth_api/auth_api_k & s/bind_auth/bind_auth_k

Rename auth_api_t and bind_auth (add _k), to avoid possible
runtime problems when mixing ser and kamailio auth_api using
modules.

10 years agoauth(s): s/auth_api/auth_api_s & s/bind_auth/bind_auth_s
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 15:13:19 +0000 (17:13 +0200)]
auth(s): s/auth_api/auth_api_s & s/bind_auth/bind_auth_s

Rename auth_api_t  and bind_auth (add _s), to avoid possible runtime
problems when mixing ser and kamailio auth_api using modules.

10 years agoauth_radius(s), avp_radius(s), uri_radius(s): revived
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 14:32:21 +0000 (16:32 +0200)]
auth_radius(s), avp_radius(s), uri_radius(s): revived

Revive modules_/{auth_radius,avp_radius,uri_radius}.
Needed to be able to use radius auth.  with ser auth_api/module
(the ser and kamailio auth apis are not compatible and so one
cannot use a kamailio radius auth with the ser auth module).

Reverts 456c3c137e9abcf687413f9675fe0f1761ce820d.

10 years agoauth_radius,misc_radius: mv back to modules_k
Andrei Pelinescu-Onciul [Mon, 14 Jun 2010 14:26:48 +0000 (16:26 +0200)]
auth_radius,misc_radius: mv back to modules_k

Partially revert 456c3c137e9abcf687413f9675fe0f1761ce820d:
move modules/{auth_radius,misc_radius} back to modules_k to allow
having 2 sets of radius modules (ser & kamailio).
This is needed because the ser and kamailio auth apis (exported by
modules*/auth) are incompatible and hence auth api using modules
cannot be mixed.

10 years agomodules_k/siputils: added is_e164(pv) function
Juha Heinanen [Mon, 14 Jun 2010 12:27:48 +0000 (15:27 +0300)]
modules_k/siputils:  added is_e164(pv) function

- More generic version of is_uri_user_e164(pv) that avoids parsing of
  URI if user is already in a pseudo variable.

10 years agoshm_regex lib: locks added around the regular expression
Miklos Tirpak [Mon, 14 Jun 2010 13:40:20 +0000 (15:40 +0200)]
shm_regex lib: locks added around the regular expression

The libc locks moved to shared memory did not work on
multi-cpu machines.
Credit goes to Stefan Keller (stefan.keller at isaco.de) for
identifying the problem and for the patch.

"The code hangs in regexec() when trying to acquire the lock.
... It turns out this only happens if
the machine has more than one physical CPU core.
Reproducable on x86_64 with two CPU cores, glibc 2.3.6 (from Debian
Etch) and glibc 2.11.1 (from Ubuntu Lucid)."

10 years agolib/srdb1/schema: replaced lcr schema files
Juha Heinanen [Thu, 10 Jun 2010 10:32:35 +0000 (13:32 +0300)]
lib/srdb1/schema: replaced lcr schema files
- Replaced lcr and gw schema files with lcr_rule, lcr_rule_target and
  lcr_gw schema files.

10 years agomodules/lcr: major rewrite
Juha Heinanen [Thu, 10 Jun 2010 10:05:05 +0000 (13:05 +0300)]
modules/lcr: major rewrite
- For easier management, information is now kept in three tables:
  lcr_rule, lcr_rule_target, and lcr_gw.
- For simplicity, gateway groups are not anymore supported.
- Added possibility to stop trying to match shorter prefixes, when a
  matching prefix is found.
- Stripping and tagging can be controlled by a flag.
- New database schema and upgrade script will be provided
  later today.

10 years agomodules/mediaproxy: ICE fixes
Juha Heinanen [Wed, 9 Jun 2010 09:27:42 +0000 (12:27 +0300)]
modules/mediaproxy: ICE fixes
- ICE attributes may appear at the session level.
- Insert our RTCP component if we found another component: some clients
  may not use a=rtcp line but then insert a RTCP candidate component.
- Credits to Saul Ibarra Corretge.

10 years agoPKG Debian
Jon Bonilla [Mon, 7 Jun 2010 21:38:59 +0000 (23:38 +0200)]
PKG Debian

- Merge from kamailio_3.0 branch of debian packaging folders

10 years agopresence_xml: fixed log message
Daniel-Constantin Mierla [Tue, 1 Jun 2010 21:02:14 +0000 (23:02 +0200)]
presence_xml: fixed log message

10 years agomodules_k/textops: fixed typo in starts_with() example
Juha Heinanen [Tue, 1 Jun 2010 13:15:13 +0000 (16:15 +0300)]
modules_k/textops: fixed typo in starts_with() example

- Thanks to Inaki for pointing out.

10 years agosrdb1: updated entities.xml path in db schema
Daniel-Constantin Mierla [Sun, 30 May 2010 09:34:47 +0000 (11:34 +0200)]
srdb1: updated entities.xml path in db schema

10 years agodb_berkeley: get rid of compile warnings
Daniel-Constantin Mierla [Sun, 30 May 2010 09:03:22 +0000 (11:03 +0200)]
db_berkeley: get rid of compile warnings

10 years agoxcap_server: removed duplicated docs
Daniel-Constantin Mierla [Sun, 30 May 2010 09:00:10 +0000 (11:00 +0200)]
xcap_server: removed duplicated docs

10 years agomodules/lcr: Simpler implementation of next_gw() function
Juha Heinanen [Fri, 28 May 2010 12:54:51 +0000 (15:54 +0300)]
modules/lcr: Simpler implementation of next_gw() function

- Based on recent changes related to Request-URI handling.

10 years agomodules/tm: new implementation of load_contacts()/next_contacts()
Juha Heinanen [Fri, 28 May 2010 12:38:41 +0000 (15:38 +0300)]
modules/tm: new implementation of load_contacts()/next_contacts()

- Simpler implementation of load_contacts()/next_contacts() functions
  based on recent changes related to Request-URI handling.
- Function next_contacts() does not anymore set any timers.  Check
  contact_avp and call t_set_fr() before calling t_relay() instead.
- Removed fr_timer_next module parameter, because it is not needed
  anymore.

10 years agoMerge remote branch 'origin/tmp/ruri_branch'
Andrei Pelinescu-Onciul [Fri, 28 May 2010 11:30:38 +0000 (13:30 +0200)]
Merge remote branch 'origin/tmp/ruri_branch'

* origin/tmp/ruri_branch:
  modules*: mark r-uri as "new" when changed
  tm: failure route start with r-uri marked as "consumed"
  tm: use ruri for forking only if marked as "new"
  core: mark uri as new on  new message or seturi()
  core: support for marking a "consumed" r-uri

10 years agoxcap_server: relaxed detection of auid type from path
Daniel-Constantin Mierla [Fri, 28 May 2010 10:51:43 +0000 (12:51 +0200)]
xcap_server: relaxed detection of auid type from path

10 years agocr: fix error in documentation related to failure_route
Henning Westerholt [Thu, 27 May 2010 15:29:03 +0000 (17:29 +0200)]
cr: fix error in documentation related to failure_route

10 years agomodules*: mark r-uri as "new" when changed
Andrei Pelinescu-Onciul [Thu, 27 May 2010 09:06:18 +0000 (11:06 +0200)]
modules*: mark r-uri as "new" when changed

Each time the r-uri, dst-uri or path is changed, the r-uri is
marked as available for forking. This should simplify a lot serial
forking from the script.

10 years agotm: failure route start with r-uri marked as "consumed"
Andrei Pelinescu-Onciul [Thu, 27 May 2010 09:02:28 +0000 (11:02 +0200)]
tm: failure route start with r-uri marked as "consumed"

When the failure route starts, the main r-uri should not be reused
for forking, unless changed.

10 years agotm: use ruri for forking only if marked as "new"
Andrei Pelinescu-Onciul [Thu, 27 May 2010 08:58:36 +0000 (10:58 +0200)]
tm: use ruri for forking only if marked as "new"

The r-uri is now used for forking only if marked as "new".
After using it, it will be automatically marked as "consumed", so
that it won't be used in the future (unless re-marked as new by
changing the r-uri, dst_uri or path).
This will simplify a lot serial forking via the script
(only seturi(...); t_relay() is needed now, no messing with
append_branch() is required anymore, unless parallel forking is desired)

10 years agocore: mark uri as new on new message or seturi()
Andrei Pelinescu-Onciul [Thu, 27 May 2010 08:55:18 +0000 (10:55 +0200)]
core: mark uri as new on  new message or seturi()

Each time a new message is received the r-uri is marked as "new"
(available for forking). The same happens when the uri is changed
or modified in the script (seturi(), rewrite_uri(), setuser(),
sethost() a.s.o.).

10 years agocore: support for marking a "consumed" r-uri
Andrei Pelinescu-Onciul [Thu, 27 May 2010 08:51:51 +0000 (10:51 +0200)]
core: support for marking a "consumed" r-uri

The main/message r-uri can now be marked as "consumed" during
forking or as "new".
New function introduced (dset.h): ruri_mark_new(),
ruri_mark_consumed(), ruri_get_forking_state().
rewrite_uri() will now automatically mark the uri as "new".

10 years agotextops: change_reply_status() added
Miklos Tirpak [Wed, 26 May 2010 15:16:47 +0000 (17:16 +0200)]
textops: change_reply_status() added

change_reply_status(code, reason) can be used to change the
status code and the reason phrase of a SIP reply
from onreply_route.

10 years agomodules/carrierroute Improved usefulness of error messages in case of a incorrect...
Marius Zbihlei [Fri, 9 Apr 2010 09:09:33 +0000 (12:09 +0300)]
modules/carrierroute Improved usefulness of error messages in case of a incorrect AVP value
(cherry picked from commit 6c51d903f5a314f4116df81121d1faa5ea8c95d3)

10 years agomodules/carrierroute In case of incorrect avp value (unknown carrier id), print the...
Marius Zbihlei [Thu, 8 Apr 2010 13:54:53 +0000 (16:54 +0300)]
modules/carrierroute In case of incorrect avp value (unknown carrier id), print the name of the avp accordinly to its type
(cherry picked from commit 5604e51eb8fd6502495a37c26f9c549bcd63ca8a)

10 years agoxcap_server: add extra headers to reply
Daniel-Constantin Mierla [Wed, 26 May 2010 11:50:07 +0000 (13:50 +0200)]
xcap_server: add extra headers to reply

10 years agopv: added $rv returning protocol version
Daniel-Constantin Mierla [Wed, 26 May 2010 09:57:54 +0000 (11:57 +0200)]
pv: added $rv returning protocol version

- return the string representing the protocol version in first line of
  request/reply

10 years agoxhttp: added supported version
Daniel-Constantin Mierla [Wed, 26 May 2010 09:50:00 +0000 (11:50 +0200)]
xhttp: added supported version

10 years agotm: support for changing the reply status in the script
Miklos Tirpak [Wed, 26 May 2010 09:31:51 +0000 (11:31 +0200)]
tm: support for changing the reply status in the script

The reply status code is re-read after the onreply_route block
is executed which makes possile to change the status code from the script.
The status code shall be rewritten directly in the message buffer
and in the parsed structure, and the class of provisional and
positive final replies cannot be changed.

10 years agocore: socket_str enclose IPv6 addresses in betwen [ ]
Daniel-Constantin Mierla [Tue, 25 May 2010 19:10:32 +0000 (21:10 +0200)]
core: socket_str enclose IPv6 addresses in betwen [ ]

- string representation of socket string takes in consideration IPv6
  addresses

10 years agoxcap_server: new module providing xcap server functinality
Daniel-Constantin Mierla [Tue, 25 May 2010 14:19:43 +0000 (16:19 +0200)]
xcap_server: new module providing xcap server functinality

- re-use the transport layer from SIP server
- XCAP documents can be sent via SIP (UDP, TCP, TLS, SCTP, HTTP and
  HTTPS
- re-use xcap table from K presence server to store the documents
- implemented basic ops: PUT, GET and DELETE
- no much testing done so far
- todo: document validation and xcap diff operations

10 years agoxhttp: new module to handle http requests
Daniel-Constantin Mierla [Tue, 25 May 2010 14:14:32 +0000 (16:14 +0200)]
xhttp: new module to handle http requests

- the module can handle http requests sent over TCP/TLS to SIP server
- event_route[xhttp:request] is executed in such case
- if you need to handle HTTP requests without Content-Lenght header, set
tcp_accept_no_cl=1
- it may conflict in HTTP handling with xmlrpc as they use same concept,
  you can set parameter mode=1 for xmrpc module and then call xmlrpc
  functions from event_route[xhttp:request]
- you can use url_match parameter to filter which HTTP requests are
  handled by this module

10 years agotcp: filled description of tcp_accept_no_cl
Daniel-Constantin Mierla [Tue, 25 May 2010 13:15:38 +0000 (15:15 +0200)]
tcp: filled description of tcp_accept_no_cl

- added missing description in tcp options structure

10 years agotcp: new parameter to accept messages without CL
Daniel-Constantin Mierla [Tue, 25 May 2010 08:48:54 +0000 (10:48 +0200)]
tcp: new parameter to accept messages without CL

- some non-sip messages with empty body do not carry content-length
- useful for http traffic handled locally
- global parameter name: tcp_accept_no_cl
- default is 0 (report error of CL is missing, default behaviour so far)
- value can be changed at runtime

10 years agoxmlrpc: new parameter - mode
Daniel-Constantin Mierla [Tue, 25 May 2010 08:29:03 +0000 (10:29 +0200)]
xmlrpc: new parameter - mode

- mode parameter controls the registration for non-SIP message callbacks
- if set to 1, module does not register the callback, the execution of
  XMLRPC functions being done from config. Useful if other module
  register callback for same type of messages, i.e., HTTP
- default is 0 (backward compatible default behavior)

10 years agofix memset call, set the variable to zero, not to the size with length 0..
Henning Westerholt [Thu, 20 May 2010 13:46:58 +0000 (15:46 +0200)]
fix memset call, set the variable to zero, not to the size with length 0..

10 years agoExtended kamctl with new features built over sercmd:
Marius Zbihlei [Thu, 20 May 2010 13:24:55 +0000 (16:24 +0300)]
Extended kamctl with new features built over sercmd:

1. Posibility to run sercmd commands via "kamctl ser" (no readline enhancements yet)
2. A new CTLENGINE ser_mi that besides unixsock and fifo provides access to mi commands.
"CTLENGINE=ser_mi kamctl ser_mi debug 3"

10 years agocore: bit conting and testing functions
Miklos Tirpak [Wed, 19 May 2010 09:53:19 +0000 (11:53 +0200)]
core: bit conting and testing functions

new functions for bit operations:
- bit_count()
- bit_test()
- bit_test_and_set()

10 years agomodules/lcr: caller_uri argument of load_gws() is now optional
Juha Heinanen [Sun, 16 May 2010 16:25:13 +0000 (19:25 +0300)]
modules/lcr: caller_uri argument of load_gws() is now optional
- If not given, it defaults to empty string.

10 years agosdp parser: fix sdp payload attributes cloning
Ovidiu Sas [Fri, 14 May 2010 19:05:17 +0000 (15:05 -0400)]
sdp parser: fix sdp payload attributes cloning

 - ptime attribute was not computed while allocating space
   for the cloned attributes

10 years agoregistrar(k): reset dst uri in lookup
Daniel-Constantin Mierla [Thu, 13 May 2010 09:41:06 +0000 (11:41 +0200)]
registrar(k): reset dst uri in lookup

- upon lookup, dst uri is reset if no new dst uri is set from received
  or path, otherwise the coordinates of selected contact are not
  effective
- reported by Andreas Granig

10 years agosdp parser: remove dead code
Ovidiu Sas [Thu, 13 May 2010 00:06:12 +0000 (20:06 -0400)]
sdp parser: remove dead code

 - remove dead code from sdp.c

10 years agotmx: fixed copy and paste error
Daniel-Constantin Mierla [Tue, 11 May 2010 14:15:41 +0000 (16:15 +0200)]
tmx: fixed copy and paste error

- t_cancel_callid => t_reply_callid()
- reported by Klaus Darilion

10 years agotmx: documentation updated
Daniel-Constantin Mierla [Tue, 11 May 2010 13:26:32 +0000 (15:26 +0200)]
tmx: documentation updated

- documented t_cancel_callid() and t_reply_callid()
- readme regenerated

10 years agotmx: two new functions for transaction control
Daniel-Constantin Mierla [Tue, 11 May 2010 13:03:19 +0000 (15:03 +0200)]
tmx: two new functions for transaction control

- t_cancel_callid(callid, cseq, flag) - cancel the INVITE transaction
  sharing the callid and cseq. It set the flag for invite transaction if
  the value is greater than 0
- t_reply_callid(callid, cseq, code, reason) - send a reply to an INVITE
  transaction sharing callid and csec
- the functions are useful for remote control of invite transaction (via
  xmlrpc or out-of-dialog sip request)
- an useful application - call pickup:
- INVITE comes in, callee is in a pickup group
- store callid, cseq, etc in database or notify the other phones in
  the group (easy to do for snom phones and extra programmable
  buttons) via uac_req_send()
- send a remote control command telling which call to pickup
  (callid, cseq) and where to redirect. In config, call
  t_cancel_callid(). in failure route for INVITE catch the cancelled
  transaction (flag is set), get the new destination (e.g., stored in
  htable) and forward the invite there

10 years agotm: internal t_reply exported via API
Daniel-Constantin Mierla [Tue, 11 May 2010 13:00:42 +0000 (15:00 +0200)]
tm: internal t_reply exported via API

- internal t_reply exported as t_reply_trans - it takes transaction
  pointer as parameter
- removed duplicate include of t_reply.h

10 years agomodules/mediaproxy: removed error message
Juha Heinanen [Tue, 11 May 2010 11:43:55 +0000 (14:43 +0300)]
modules/mediaproxy: removed error message

- Removed error message since a=rtcp line could contain the port only.
  Credits to Thomas Gelf and Saul Ibarra Corretge.

10 years agomodules_k/permissions: fixed reloading of address table
Juha Heinanen [Sun, 9 May 2010 12:02:11 +0000 (15:02 +0300)]
modules_k/permissions: fixed reloading of address table
- Database handle was not initialized when address table was reloaded.
  Now it is initialized/closed at each reload.  Looks like this has
  never been tested before.  Still don't know why mi_addr_child_init()
  exists and what it is supposed to do.

10 years agoavposp: use state in searching first avp in avp_copy
Daniel-Constantin Mierla [Thu, 6 May 2010 19:09:47 +0000 (21:09 +0200)]
avposp: use state in searching first avp in avp_copy

- state parameter was missing when searching first avp, keeping it
  uninitialized when searching the next, causing a crash when flag 'g'
  was used in avp_copy
- reported by Jon Bonilla (Manwe)

10 years agotm: use direct assignment to exported API
Daniel-Constantin Mierla [Thu, 6 May 2010 18:49:43 +0000 (20:49 +0200)]
tm: use direct assignment to exported API

- non-cfg functions are exported via direct assignment, they do not
  follow cfg command prototype

10 years agotm: removed the defines of cfg and api functions
Daniel-Constantin Mierla [Thu, 6 May 2010 18:17:08 +0000 (20:17 +0200)]
tm: removed the defines of cfg and api functions

10 years agodispatcher(k): allow functions from route block
Daniel-Constantin Mierla [Thu, 6 May 2010 16:51:45 +0000 (18:51 +0200)]
dispatcher(k): allow functions from route block

- they do not depend on sip message itself, but script variables

10 years agocore:sr_module.c increased number of pre-allocated static buffers in get_str_fparam()
Marius Zbihlei [Tue, 4 May 2010 14:06:47 +0000 (17:06 +0300)]
core:sr_module.c increased number of pre-allocated static buffers in get_str_fparam()

Increased the number from 3 to 6 as more are needed by modules like carrierroute when avp's are used as function parameters
(Bug reported by Ole Kaas)

10 years agomtree: fixed len check for dbtable attribute
Daniel-Constantin Mierla [Tue, 4 May 2010 12:19:06 +0000 (14:19 +0200)]
mtree: fixed len check for dbtable attribute

10 years agoModules:carrierroute: Fixed a bug in carrirroute module that might cause a crash...
Marius Zbihlei [Tue, 4 May 2010 10:10:03 +0000 (13:10 +0300)]
Modules:carrierroute: Fixed a bug in carrirroute module that might cause a crash if the routing prob was larger than the number of available routes.

The problem was caused by a missing else

10 years agomodules_k/ratelimit: adding rpc interface
Ovidiu Sas [Wed, 28 Apr 2010 15:28:29 +0000 (11:28 -0400)]
modules_k/ratelimit: adding rpc interface

 - functionality provided via mi interface was extended to rpc interface

10 years agolib/srdb1 The RES_ROW(res) was not checked to be NULL before being used
Marius Zbihlei [Tue, 27 Apr 2010 12:40:10 +0000 (15:40 +0300)]
lib/srdb1 The RES_ROW(res) was not checked to be NULL before being used

This caused a crash in the case that RES_ROW_N(res) was > 0, and RES_ROW was NULL
(like a pkg_malloc going bad in a OOM scenario).

10 years agomodules/mediaproxy: crash fix
Juha Heinanen [Tue, 27 Apr 2010 06:30:12 +0000 (09:30 +0300)]
modules/mediaproxy: crash fix
- Fixed crash when received reply contains more streams than the
  INVITE.  Credits to Saúl Ibarra Corretgé.

10 years agohtable(k): add a note about the htable size enforcement rules in the mod
Henning Westerholt [Mon, 26 Apr 2010 11:15:19 +0000 (13:15 +0200)]
htable(k): add a note about the htable size enforcement rules in the mod

10 years agomodules/lcr: new feature added and old one removed
Juha Heinanen [Sun, 25 Apr 2010 07:35:59 +0000 (10:35 +0300)]
modules/lcr: new feature added and old one removed

- Gateway ip_addr can now be NULL if hostname is given.  If ip_addr of
  one or more gateways in an LCR instance is NULL, all test functions
  fail on that LCR instance, because for performance reasons, no DNS
  queries are done by the test functions.
- Removed support for MI functions.

10 years agocfg: extended preprocessor directives
Daniel-Constantin Mierla [Fri, 23 Apr 2010 21:58:43 +0000 (23:58 +0200)]
cfg: extended preprocessor directives

- you can define values for IDs
- defined IDs are replaced at startup, during config parsing, e.g.,:
$var(x) = 100 + MYINT;
- is interpreted as:
$var(x) = 100 + 123;
- you can have multi-line defined IDs
while($var(i)<5) { \
xlog("++++ $var(i)\n"); \
$var(i) = $var(i) + 1; \
}
- then in routing block
route {
    ...
    IDLOOP
    ...
}
- new preprocessor directive
- perform substitutions inside the strings of config (not that define is
  replacing only IDs - alphanumeric tokens not enclosed in quotes)
- #!subst offers an easy way to search and replace inside strings before
  cfg parsing. E.g.,:
modparam("acc", "db_url", "mysql://user:DBPASSWD@localhost/db")
- will do the substitution of db password in db_url parameter value
- number of allowed defines set to 256
- credits to Andrei for quick hints on ID defines
- notes:
- multilines defines are reduced to single line, so line counter
  should be fine
- column counter goes inside the define value, but you have to omit
  the \ and CR for the accurate inside-define position

10 years agoutils/kamctl: cleaned up lcr commands
Juha Heinanen [Fri, 23 Apr 2010 18:39:28 +0000 (21:39 +0300)]
utils/kamctl: cleaned up lcr commands

- Does not work yet, because $RPCCMD has not been defined yet and I
  don't know where it should be defined.

10 years agomodules/lcr: added URI parameters gateway attribute
Juha Heinanen [Fri, 23 Apr 2010 17:14:57 +0000 (20:14 +0300)]
modules/lcr: added URI parameters gateway attribute

10 years agofix typo in man page, reported from Juha
Henning Westerholt [Fri, 23 Apr 2010 15:38:50 +0000 (17:38 +0200)]
fix typo in man page, reported from Juha

10 years agocore - tm: improved log messages
Daniel-Constantin Mierla [Fri, 23 Apr 2010 14:44:49 +0000 (16:44 +0200)]
core - tm: improved log messages

- udp_send() prints outgoing buffer len as unsigned
- build_uac_req() prints the size of attempted memory chunk allocation

10 years agoutils/kamctl/kamctl.8: removed obsolete text
Juha Heinanen [Fri, 23 Apr 2010 10:51:21 +0000 (13:51 +0300)]
utils/kamctl/kamctl.8: removed obsolete text

10 years agomodules/lcr: load_gws() return value tells if any matching gw was found
Juha Heinanen [Fri, 23 Apr 2010 10:34:25 +0000 (13:34 +0300)]
modules/lcr: load_gws() return value tells if any matching gw was found

- load_gws() now returns 1 if at least one matching gateway was found, 2
  if no matching gateways was found, and -1 on error.

10 years agodoc: Removed hardoded kamctl value and replaced it with an XML entity
Marius Zbihlei [Thu, 22 Apr 2010 10:19:58 +0000 (13:19 +0300)]
doc: Removed hardoded kamctl value and replaced it with an XML entity

This will allow for faster documentation changes regarding the ser-kamailio ctl tools unification proposal

10 years agodialog(k): populate bind addr before any error
Daniel-Constantin Mierla [Thu, 22 Apr 2010 08:35:33 +0000 (10:35 +0200)]
dialog(k): populate bind addr before any error

- setting bind addr attribute in populate_leg_info() takes place before
  any parsing error may occur, to be sure it is set, avoiding extra
  check for null value when updating db
- reported by Kelvin Chua
- credits to Timo Reimann for troubleshooting

10 years agocore: #!def aliased to #!define
Daniel-Constantin Mierla [Wed, 21 Apr 2010 13:59:26 +0000 (15:59 +0200)]
core: #!def aliased to #!define

- alternative to avoid conflicts with some text preprocessors

10 years agopv: fixed pv class names in log messages
Daniel-Constantin Mierla [Wed, 21 Apr 2010 13:11:05 +0000 (15:11 +0200)]
pv: fixed pv class names in log messages

10 years agodialplan: safety check for fetch rows before data init
Daniel-Constantin Mierla [Wed, 21 Apr 2010 13:04:55 +0000 (15:04 +0200)]
dialplan: safety check for fetch rows before data init

10 years agomodules_k/usrloc Updated README to reflect the changes made to documentation
Marius Zbihlei [Wed, 21 Apr 2010 12:14:48 +0000 (15:14 +0300)]
modules_k/usrloc Updated README to reflect the changes made to documentation

10 years agodset: exposed branch structure
Daniel-Constantin Mierla [Wed, 21 Apr 2010 10:53:03 +0000 (12:53 +0200)]
dset: exposed branch structure

- added helper functions to allow branch attributes updates via PVs
- related to FS#8

10 years agopv: implemented assignment for branch pvs
Daniel-Constantin Mierla [Wed, 21 Apr 2010 10:46:20 +0000 (12:46 +0200)]
pv: implemented assignment for branch pvs

- branch attributes can be individually changed via
  $(branch(attr)[index])
- if index is missing, first branch structure is taken
- if index is -1, last branch is missing
- adding a new branch is possible via km_append_branch("uri") or
  append_branch() functions
- $(branch(uri)[index]) = $null; will drop the branch. Note that the
  next branches after dropped one will be shifted one possiotn back
- for the rest of attributes, $null assignment means reseting the value
  of the attribute to null (uri is mandatory to have the branch valid)
- completed FS#8

10 years agomodules_k/usrloc Fixed 2 bad typos in documentation
Marius Zbihlei [Wed, 21 Apr 2010 10:28:04 +0000 (13:28 +0300)]
modules_k/usrloc Fixed 2 bad typos in documentation

Reported by Juha Heinanen

10 years agomodules_k/usrloc Added Contact and Path matching mode
Marius Zbihlei [Wed, 21 Apr 2010 10:16:45 +0000 (13:16 +0300)]
modules_k/usrloc Added Contact and Path matching mode

The binding is matched against Contact and Path
Patch provided by Bayan Towfiq ( bayan at flowroute dot com )

10 years ago core: The patch allows ser started in daemonize mode to return the proper error...
Marius Zbihlei [Wed, 21 Apr 2010 09:35:16 +0000 (12:35 +0300)]
 core: The patch allows ser started in daemonize mode to return the proper error code.

    If for example the listen address is not local or a DB connection uses an invalid password, then the command
    "ser" would return 0 (OK) anyway (even if it fails to start).This occurs because all those checking
    (socket, DB connections...) are performed *after* invoking daemonize() so the parent process (which
    could be invoked by "/etc/init.d/ser start") returns 0 knowing nothing about those errors. This caused some
    management tools like HeartBeat to work badly.

    The patch is simple: the master process opens a pipe, and reads from one end. The forked main process,
    after the correct initialization of components, will write some bytes to the writting end. In case of error,
    no data is written to the pipe.

    The master process waits for 10 seconds, or else it considers the main process blocked and exits with a different
    error code( -2 ). In this case, it is left for the user to ensure that all ser children are killed correctly.

    Patch initially from Iñaki Baz Castillo.

10 years agomodules/enum: '&kamailio;' => '&siprouter;' in doc.
Juha Heinanen [Wed, 21 Apr 2010 08:18:45 +0000 (11:18 +0300)]
modules/enum: '&kamailio;' => '&siprouter;' in doc.