sip-router
11 years agoMerge commit 'origin/ser_modules'
Andrei Pelinescu-Onciul [Thu, 17 Sep 2009 19:07:54 +0000 (21:07 +0200)]
Merge commit 'origin/ser_modules'

* commit 'origin/ser_modules':
  cfg framework: fix the initialization of child processes
  - iptrtpproxy.cfg support (share config data between iptables and ser module)

11 years agoMerge branch 'cvs-head' of ssh://git.sip-router.org/ser_modules into ser_modules
Andrei Pelinescu-Onciul [Thu, 17 Sep 2009 19:05:45 +0000 (21:05 +0200)]
Merge branch 'cvs-head' of ssh://git.sip-router.org/ser_modules into ser_modules

* 'cvs-head' of ssh://git.sip-router.org/ser_modules:
  cfg framework: fix the initialization of child processes
  - iptrtpproxy.cfg support (share config data between iptables and ser module)

11 years agotm: callback param free functions can use shm_free()
Miklos Tirpak [Mon, 14 Sep 2009 15:57:40 +0000 (17:57 +0200)]
tm: callback param free functions can use shm_free()

The release function of the callback parameters is
called outside of the shared memory lock to make the
implementation of such functions easier.

11 years agoimc(k): fix copy&paste error in example
Daniel-Constantin Mierla [Mon, 14 Sep 2009 08:16:24 +0000 (10:16 +0200)]
imc(k): fix copy&paste error in example

11 years agocfg framework: CFG_CB_ONLY_ONCE documented
Miklos Tirpak [Fri, 11 Sep 2009 10:54:19 +0000 (12:54 +0200)]
cfg framework: CFG_CB_ONLY_ONCE documented

CFG_CB_ONLY_ONCE has been documented

11 years agocfg framework: CFG_CB_ONLY_ONCE flag
Miklos Tirpak [Fri, 11 Sep 2009 10:08:13 +0000 (12:08 +0200)]
cfg framework: CFG_CB_ONLY_ONCE flag

CFG_CB_ONLY_ONCE flag indicates that the per-child
process callback is called only once after the changes
to the global config have been committed.
(The first child process that updates its local
config calls the callback, and no other child
process does so.)
The per-child process cb is intended to be used to
update the config variables that are stored outside
of the cfg framework. By default this callback is called
by all the child processes separately, this can be change
with this flag.

11 years agopdbt: add one helper script, protocol and input data documentation
Henning Westerholt [Thu, 10 Sep 2009 17:32:41 +0000 (19:32 +0200)]
pdbt: add one helper script, protocol and input data documentation

11 years agopdb: add daemon 'pdb_server' and optimising data compiler 'pdbt'
Henning Westerholt [Thu, 10 Sep 2009 16:35:05 +0000 (18:35 +0200)]
pdb: add daemon 'pdb_server' and optimising data compiler 'pdbt'

- add number portability database daemon and optimizing data compiler
- add debian packaging scripts for tool and daemon as well
- TODO:
  - add documentation (run binaries with '-h' for now to get help)
  - fix this redundant declaration of trie (dt* files) and logging (log*).
    There exists already an implementation that uses the sr core parts for
    this, but we import the proven implementation for now.
  - add data helper scripts as well, they need some cleanup first
- initial implementation was done from Hardy Kahl @ 1&1 Internet Ag
- further bug fixes from Timo Reimann, timo dot reimann at 1und1 dot de

11 years agotest: fix path in test 2, add pdb module
Henning Westerholt [Thu, 10 Sep 2009 16:23:21 +0000 (18:23 +0200)]
test: fix path in test 2, add pdb module

11 years agoadd pdb module to the 'stable, but for special use' group in Makefile
Henning Westerholt [Thu, 10 Sep 2009 16:22:07 +0000 (18:22 +0200)]
add pdb module to the 'stable, but for special use' group in Makefile

11 years agotm: mem leak correction #2
Miklos Tirpak [Thu, 10 Sep 2009 16:11:56 +0000 (18:11 +0200)]
tm: mem leak correction #2

- shm_free() needs to be used instead of shm_free_unsafe()
- The callback params may have a release function

11 years agotm: minor mem leak corrected
Miklos Tirpak [Thu, 10 Sep 2009 15:50:57 +0000 (17:50 +0200)]
tm: minor mem leak corrected

After the memory of a cell is allocated other modules
immediately have a chance to register transaction callbacks,
and they may also allocate additional memory for
the callback parameters. When sip_msg_cloner()
failed, the memory allocated for the callback
list was not freed. This happend only when the available
shm memory was already very low which caused sip_msg_cloner()
to fail.

11 years agotextops(k): new function - msg_apply_changes()
Daniel-Constantin Mierla [Thu, 10 Sep 2009 14:22:08 +0000 (16:22 +0200)]
textops(k): new function - msg_apply_changes()

- apply changes done to SIP request content (e.g., via subst(),
  append_hf(), remove_hf(), etc.)
- after using this function, the content of SIP message buffer is
  updated and the initially recevied content is lost
- function can be used in request route blocks
- be careful when used since:
- it changes the way you're used so far
- not much tested with various modules

11 years agoimc(k): return code classes per command
Daniel-Constantin Mierla [Thu, 10 Sep 2009 12:51:08 +0000 (14:51 +0200)]
imc(k): return code classes per command

- for each imc command a range of negative numbers is reserved to signal
  errors to config file
- example enhanced to replect the need of sending replies from config
  file

11 years agomodules_k/imc: fixed typo in #help reply
Juha Heinanen [Wed, 9 Sep 2009 09:12:58 +0000 (12:12 +0300)]
modules_k/imc: fixed typo in #help reply

11 years agomodules_k/imc: added "extra_hdrs" module variable
Juha Heinanen [Wed, 9 Sep 2009 06:54:38 +0000 (09:54 +0300)]
modules_k/imc: added "extra_hdrs" module variable

Added "extra_hdrs" module variable that can be used to inject extra
headers to messages send out from IMC server.

11 years agonew module: connector to Portability number DataBase daemon
Henning Westerholt [Tue, 8 Sep 2009 17:14:01 +0000 (19:14 +0200)]
new module: connector to Portability number DataBase daemon

- new module, connector to portable number database daemon, pdbd
- the daemon implements a custom UDP protocol that allows the query of a custom
  number portability database optimized for speed and memory efficieny based
  on the 'cr' trie datastructure
- the daemon allows the storage of a number to carrier mapping for e.g. whole
  germany in a few hundred megabytes of RAM, and their efficient retrival
- the connector module supports aggressive time outs to keep the post dial
  delay low, it will return then a failure and default routing is possible
- TODO: port daemon and optimizing compiler as well, extend README
- this daemon (in its OpenSER version) has been used in production, but some
  bugs could be slipped in the porting process
- credits for implementation: Hardy Kahl @ 1&1 Internet AG

11 years agocr: bug fix in new introduced function, cr_nofallback_routing
Henning Westerholt [Tue, 8 Sep 2009 16:03:50 +0000 (18:03 +0200)]
cr: bug fix in new introduced function, cr_nofallback_routing

11 years agocr: protect against user error when backup is the same as initial host, port from...
Henning Westerholt [Tue, 8 Sep 2009 15:42:14 +0000 (17:42 +0200)]
cr: protect against user error when backup is the same as initial host, port from r5924

11 years agomodules_k/imc: degraded log message
Juha Heinanen [Mon, 7 Sep 2009 10:15:44 +0000 (13:15 +0300)]
modules_k/imc: degraded log message

* Degraded log message from info to dbg in imc_parse_cmd function.

11 years agocr: new function 'cr_nofallback_route'
Henning Westerholt [Mon, 7 Sep 2009 08:34:58 +0000 (10:34 +0200)]
cr: new function 'cr_nofallback_route'

- add new function 'cr_nofallback_route' which behaves exactly like
  the existing 'cr_prime_route' function but uses the standard CRC32
  hash instead of this prime function to provide an path away from
  this function
- mark 'cr_prime_route' function as obselete in docs
- patch from Carsten Gross, carsten dot gross at 1und1 dot de

11 years agocr: add random distribution function
Henning Westerholt [Mon, 7 Sep 2009 08:19:38 +0000 (10:19 +0200)]
cr: add random distribution function

- add a random distribution function to cr
- patch from Marius Zbihlei, marius dot zbihlei at 1and1 dot ro

11 years agoregistrar(k): port from r5923: information leak bug in registrar
Henning Westerholt [Fri, 4 Sep 2009 16:14:11 +0000 (18:14 +0200)]
registrar(k): port from r5923: information leak bug in registrar

11 years agouserblacklist(k): fix error in check_user_blacklist DB code
Henning Westerholt [Fri, 4 Sep 2009 15:56:31 +0000 (17:56 +0200)]
userblacklist(k): fix error in check_user_blacklist DB code

- fix an error in the check_user_blacklist DB code, we need to return
  the WHITELIST node when we found a value != zero
- reported from Alexandr Dubovikov, Alexandr dot Dubovikov at qsc dot de

11 years agouserblacklist(k): add new function 'check_user_whitelist'
Henning Westerholt [Fri, 4 Sep 2009 15:44:43 +0000 (17:44 +0200)]
userblacklist(k): add new function 'check_user_whitelist'

- add new function 'check_user whitelist'
- patch from Alexandr Dubovikov, Alexandr dot Dubovikov at qsc dot de
- works like the existing check_user_blacklist, but return -1 when not
  the user is not found

11 years agooob cfg: merged changes from last SIPit
Nils Ohlmeier [Thu, 3 Sep 2009 14:22:48 +0000 (16:22 +0200)]
oob cfg: merged changes from last SIPit

This version of sip-router-oob.cfg was successfully tested at
SIPit 24. The changes are:
- re-organzied the NAT detection
- added lots of comments about NAT detection
- renamed the record- and loose-routes
- added an inactive ENUM route
- activated DNS NAPTR and SRV options
- disabled TCP async to allow usage of TLS
- disabled the files limit as this prevents the usage of the config as non-root
user on most systems

11 years agodomain(k): regenerated readme
Daniel-Constantin Mierla [Thu, 3 Sep 2009 12:43:29 +0000 (14:43 +0200)]
domain(k): regenerated readme

- include new parameter 'register_myself'

11 years agocore: include replaced with include_file
Daniel-Constantin Mierla [Thu, 3 Sep 2009 10:18:31 +0000 (13:18 +0300)]
core: include replaced with include_file

- due to opinions expressed on mailing list suggesting it reflects
  better the meaning

11 years agodomain(k): new module parameter - register_myself
Daniel-Constantin Mierla [Thu, 3 Sep 2009 10:16:27 +0000 (13:16 +0300)]
domain(k): new module parameter - register_myself

- cotrol registration of domain list to 'myself' check callbacks
- disabled by default (requested by Juha Heinanen for backward
  compatibility)

11 years agocfg framework: fix the initialization of child processes
Miklos Tirpak [Thu, 3 Sep 2009 09:56:18 +0000 (09:56 +0000)]
cfg framework: fix the initialization of child processes
(backport from sip-router)

The number of child processes that keep updating their
local configuration needs to be known before any child
process is forked.
Before this the child processes increased the reference
counter of the callback function list items after forking.
If a child process was forked "too fast" then it freed the list
before the other processes had a chance to refer to the list
item. The result was that some child processes missed
the initial configuration changes. (Those changes that
had per-child process callback defined.)

11 years agocfg framework: fix the initialization of child processes
Miklos Tirpak [Wed, 2 Sep 2009 15:03:57 +0000 (17:03 +0200)]
cfg framework: fix the initialization of child processes

The number of child processes that keep updating their
local configuration needs to be known before any child
process is forked.
Before this the child processes increased the reference
counter of the callback function list items after forking.
If a child process was forked "too fast" then it freed the list
before the other processes had a chance to refer to the list
item. The result was that some child processes missed
the initial configuration changes. (Those changes that
had per-child process callback defined.)

11 years agomodules_k/htable - documentation clarification
Juha Heinanen [Wed, 2 Sep 2009 15:02:20 +0000 (18:02 +0300)]
modules_k/htable - documentation clarification

* Clarified meaning of "size" parameter in htable definition.

11 years agocore & avpops: fix overlapping avp flag
Daniel-Constantin Mierla [Mon, 31 Aug 2009 10:01:46 +0000 (13:01 +0300)]
core & avpops: fix overlapping avp flag

- k avpops uses a flag to mark whether a loaded avp from db has changed,
  in order to decide if worth to update db
- the value was overlapping with flags defined in sr core
- reported by Juha Heinanen

11 years agomodules/lcr: added checks on validity of lcr_id parameter.
Juha Heinanen [Fri, 28 Aug 2009 17:40:05 +0000 (20:40 +0300)]
modules/lcr: added checks on validity of lcr_id parameter.

11 years agomodules_s: include sr_module.h
Daniel-Constantin Mierla [Fri, 28 Aug 2009 08:46:31 +0000 (11:46 +0300)]
modules_s: include sr_module.h

- some modules updated to include sr_module.h as they need access to
  fparam_t
- previously that was inherited from modules_s/sl/sl_funcs.h which was
  included by modules_s/sl/sl.h
- modules_s/sl/sl.h became simple API definition being included by
  modules_k/sl/sl.h in order to export same API in K version

11 years agoxmlrpc(s): remove the K sl define
Daniel-Constantin Mierla [Fri, 28 Aug 2009 08:44:37 +0000 (11:44 +0300)]
xmlrpc(s): remove the K sl define

- no more needed - the modules should work the same with any version
  of sl module

11 years agosl(k): implement ser-like SL api
Daniel-Constantin Mierla [Fri, 28 Aug 2009 08:40:35 +0000 (11:40 +0300)]
sl(k): implement ser-like SL api

- SER modules dependent of sl module can work now with k-sl
- exported sl_send_reply() ser function takes the reason as charz while k version is str
- conflict was resolved since SER does the export via sl_api_t structure
  and bind_sl() function, kamailio does via sl_binds structure and
  load_sl() function - both are now included in k-sl module

11 years agosl(s): move typedef of sl_send_reply_f in sl.h
Daniel-Constantin Mierla [Fri, 28 Aug 2009 08:38:14 +0000 (11:38 +0300)]
sl(s): move typedef of sl_send_reply_f in sl.h

- modules_s/sl/sl.h is included by modules_k/sl/sl.h to export ser-like
  SL API in kamailio sl module
- allow using ser modules dependent of sl with k-sl module

11 years agocore: use count() for 'include' directive
Daniel-Constantin Mierla [Thu, 27 Aug 2009 08:28:33 +0000 (11:28 +0300)]
core: use count() for 'include' directive

11 years agocore: callback function support for myself check
Daniel-Constantin Mierla [Thu, 27 Aug 2009 08:22:10 +0000 (11:22 +0300)]
core: callback function support for myself check

- modules can register callback functions for myself check condition
- domain module is one candidate, resulting in coherent handling of
  local domains via check myself operation
- callback functions must have same prototype and return codes as
  check_self(...) function from core

11 years agodomain(k): register check self function
Daniel-Constantin Mierla [Thu, 27 Aug 2009 08:20:29 +0000 (11:20 +0300)]
domain(k): register check self function

- list of domains handled by module match now the 'myself' condition
- the module register a callback function for 'myself' checks
- port and proto are ignored since it has only domain names

11 years agoperl: use C append_branch() in Perl function
Daniel-Constantin Mierla [Wed, 26 Aug 2009 18:23:03 +0000 (20:23 +0200)]
perl: use C append_branch() in Perl function

- perviously mk_action() was used resulting in lot of pkg operations at
  runtime
- fixes the memory leak reported by James Pucket

11 years agocore: included file name must be between double quotes
Daniel-Constantin Mierla [Wed, 26 Aug 2009 10:19:36 +0000 (13:19 +0300)]
core: included file name must be between double quotes

- better suggestion that is a static string value (Jan Janak)
- new syntax:
include "file_name"
- inside double quotes, following escape are allowed for now
- \t - tab
- \w - white space
- \r - CR
- \n - LF

11 years agocore: action struct holds cfg file name and line
Daniel-Constantin Mierla [Wed, 26 Aug 2009 08:51:51 +0000 (11:51 +0300)]
core: action struct holds cfg file name and line

- useful to print cfg file position for runtime action errors

11 years agocore: print cfg position for action's runtime error
Daniel-Constantin Mierla [Wed, 26 Aug 2009 08:50:25 +0000 (11:50 +0300)]
core: print cfg position for action's runtime error

11 years ago- iptrtpproxy.cfg support (share config data between iptables and ser module)
Tomas Mandys [Tue, 25 Aug 2009 19:30:14 +0000 (19:30 +0000)]
- iptrtpproxy.cfg support (share config data between iptables and ser module)

11 years agocore: support for include file in cfg
Daniel-Constantin Mierla [Tue, 25 Aug 2009 16:27:01 +0000 (19:27 +0300)]
core: support for include file in cfg

- syntax:
include path/to/file
- example:
include checks.cfg
- path can be absolute or relative
- if path is relative:
- first attempt is to open the file relative to current directory
- second attempt is to open the file relative to the directory
of the file including it
- if include file fails, then print error and exit
- cfg syntax error messages print file name
- there is no restriction where 'include' can be used, can have
global parameters, module configs or entire/parts of route blocks

11 years agorls: memory leak fix
Elena-Ramona Modroiu [Tue, 25 Aug 2009 08:36:59 +0000 (11:36 +0300)]
rls: memory leak fix

- port of K #5909

11 years agorls: fixed supported header name
Elena-Ramona Modroiu [Tue, 25 Aug 2009 08:16:53 +0000 (11:16 +0300)]
rls: fixed supported header name

- port of K #5908

11 years agopv: new pv class $sel(name)
Daniel-Constantin Mierla [Thu, 20 Aug 2009 13:12:35 +0000 (16:12 +0300)]
pv: new pv class $sel(name)

- access select (ser cfg variables) values via PV framework
- read-only PV
- examples: $sel(@ruri), $sel(@via[2].host)

11 years agocore: support to add rport parameter to local via hdr
Daniel-Constantin Mierla [Thu, 20 Aug 2009 09:57:01 +0000 (12:57 +0300)]
core: support to add rport parameter to local via hdr

- new cfg function - add_local_rport() - to add rport parameter to local
  via header (rfc3581)

11 years agocore: server signature value can be set via param
Daniel-Constantin Mierla [Thu, 20 Aug 2009 08:49:14 +0000 (11:49 +0300)]
core: server signature value can be set via param

- server and user agent signature were only defines so far
- two new parameters server_header and user_agent_header allow
to define them via cfg parameters
- default values are the same so far

11 years agotm: use server signature from config var
Daniel-Constantin Mierla [Thu, 20 Aug 2009 08:48:35 +0000 (11:48 +0300)]
tm: use server signature from config var

11 years agocore: added log_name config parameter
Daniel-Constantin Mierla [Thu, 20 Aug 2009 07:41:02 +0000 (10:41 +0300)]
core: added log_name config parameter

- log_name allows to set app name to be used when printing to syslog
- useful to filter log messages when running many instance on same server

11 years agoauth(k): fix proxy/ www_challenge function, extends docs a bit (port r5874)
Henning Westerholt [Wed, 19 Aug 2009 14:54:53 +0000 (16:54 +0200)]
auth(k): fix proxy/ www_challenge function, extends docs a bit (port r5874)

 - proxy_challenge / www_challenge was not sending any reply, in case
    the nonce could not be created (with nonce_reuse = 0, default since 1.4)
 - added a note to the docs about return-values from the auth-module
 - regenerate README file

11 years agolib kmi: fix double allocation length calculation in mi_add_attr function
Henning Westerholt [Wed, 19 Aug 2009 14:51:44 +0000 (16:51 +0200)]
lib kmi: fix double allocation length calculation in mi_add_attr function

- patch from marius zbihlei, marius dot zbihlei at 1and1 dot ro, port from r5882

11 years agocr: small fix in doxygen, fix obselete function description (port from r5897)
Henning Westerholt [Wed, 19 Aug 2009 14:44:48 +0000 (16:44 +0200)]
cr: small fix in doxygen, fix obselete function description (port from r5897)

11 years agocr: documentation extension related to the prime route behaviour (port r5898)
Henning Westerholt [Wed, 19 Aug 2009 14:40:04 +0000 (16:40 +0200)]
cr: documentation extension related to the prime route behaviour (port r5898)

11 years agoauth_db(k): fix error in auth_db documentation for calc_ha1 (port from r5910)
Henning Westerholt [Wed, 19 Aug 2009 14:37:10 +0000 (16:37 +0200)]
auth_db(k): fix error in auth_db documentation for calc_ha1 (port from r5910)

11 years agocr: fix stupid bug related to the (legacy..) prime_route function (port from r5911)
Henning Westerholt [Wed, 19 Aug 2009 14:35:06 +0000 (16:35 +0200)]
cr: fix stupid bug related to the (legacy..) prime_route function (port from r5911)

11 years agoauth_identity: Add -lrt and -ldap to the list of libraries
Jan Janak [Fri, 7 Aug 2009 12:19:36 +0000 (14:19 +0200)]
auth_identity: Add -lrt and -ldap to the list of libraries

Two more libraries are needed when compiling auth_identity module
statically, -lrt and -lldap.

Reported by MÉSZÁROS Mihály <misi@niif.hu>

11 years agotls: Set internal module name to "tls".
Jan Janak [Fri, 7 Aug 2009 11:35:39 +0000 (13:35 +0200)]
tls: Set internal module name to "tls".

Set module name to "tls", not "tlsops".
Reported by MÉSZÁROS Mihály <misi@niif.hu>

11 years agopresence_xml: define _DARWIN_C_SOURCE 1
Daniel-Constantin Mierla [Mon, 3 Aug 2009 13:54:54 +0000 (15:54 +0200)]
presence_xml: define _DARWIN_C_SOURCE 1

- compile the module on darwin, workaround for strptime

11 years agocore: script parsing avp flags fix
Andrei Pelinescu-Onciul [Thu, 30 Jul 2009 13:57:27 +0000 (15:57 +0200)]
core: script parsing avp flags fix

Fix bug when parsing attr_id_any_str used by the avp flags
script functions (setavpflag(), resetavpflag(), isavpflagset()).

Closes: SR #11.
Reported-by: Greger Viken Teigre gregert at teigre com.
11 years agoignore auto-generated files on mac os x
Daniel-Constantin Mierla [Wed, 29 Jul 2009 14:39:07 +0000 (16:39 +0200)]
ignore auto-generated files on mac os x

11 years agoregistrar(k): local send_reply() renamed
Daniel-Constantin Mierla [Wed, 29 Jul 2009 09:20:59 +0000 (11:20 +0200)]
registrar(k): local send_reply() renamed

- new name reg_send_reply()
- symbol conflict with sl module version on darwinos

11 years agorls(k): include lib/kcore/hash_func.h
Daniel-Constantin Mierla [Wed, 29 Jul 2009 09:13:05 +0000 (11:13 +0200)]
rls(k): include lib/kcore/hash_func.h

- fix warning for using core_hash() function

11 years agomodules_s: destroy() function set to static
Daniel-Constantin Mierla [Wed, 29 Jul 2009 09:08:39 +0000 (11:08 +0200)]
modules_s: destroy() function set to static

- fix namespace conflicts on darwinos

11 years agomodules_k: destroy() functions set to static
Daniel-Constantin Mierla [Wed, 29 Jul 2009 08:41:25 +0000 (10:41 +0200)]
modules_k: destroy() functions set to static

- fix namespacing conflicts in darwinos

11 years agomodules/utils: added check on size of http_query reply
Juha Heinanen [Fri, 24 Jul 2009 16:10:23 +0000 (19:10 +0300)]
modules/utils: added check on size of http_query reply

- Added check on actual size of http_query reply body that fixes possible
  crash if body does not contain a linefeed.
- If body does not contain a linefeed, return whole body as result.

11 years agotm: dialog send_socket support
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 23:18:38 +0000 (01:18 +0200)]
tm: dialog send_socket support

t_uac()/t_uac_prepare() use now the dialog->send_sock if set
(fixes rpc t_uac_* and mi_t_uac_dlg not obeying the send socket
parameter).

11 years agotm: new uri2dst() version
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 23:15:02 +0000 (01:15 +0200)]
tm: new uri2dst() version

- new uri2dst2() function which can have the send_socket passed
directly to it.
- uri2dst() is now a wrapper over uri2dst2().

11 years agocore: get_send_socket fix for tcp or tls forced socket
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 23:10:05 +0000 (01:10 +0200)]
core: get_send_socket fix for tcp or tls forced socket

One of the get_send_socket() sanity tests, checks if ser really
listens on the forced socket. For tcp and tls this test should not
be performed (the sockets are closed for the processes that do not
need them => cannot test by looking at the fd).

11 years agocore: enhanced get_send_socket() version
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 21:51:27 +0000 (23:51 +0200)]
core: enhanced get_send_socket() version

get_send_socket2() added.

11 years agoMerge commit 'origin/tmp/build_local'
Andrei Pelinescu-Onciul [Tue, 21 Jul 2009 12:53:26 +0000 (14:53 +0200)]
Merge commit 'origin/tmp/build_local'

* commit 'origin/tmp/build_local':
  core: init via_len to cope with no via update flag
  tm: local req. route: do not save/restore the avps
  tm: local req. route: cache route id
  tm: local req. route: always free the tmp sip msg
  tm: local req. route rcv init fix
  tm: updated execution of event route
  core: build_req_buf_from_sip_req() has a new parameter
  tm: update to new signature of build_req_buf_from_sip_req()
  tm: execute event_route[tm:local-request] if defined

11 years agocore: init via_len to cope with no via update flag
Daniel-Constantin Mierla [Tue, 21 Jul 2009 11:49:36 +0000 (13:49 +0200)]
core: init via_len to cope with no via update flag

11 years agotm: local req. route: do not save/restore the avps
Andrei Pelinescu-Onciul [Tue, 21 Jul 2009 10:20:16 +0000 (12:20 +0200)]
tm: local req. route: do not save/restore the avps

- reset_avps() moved after running the local req. route so at
  least there is a chance that some avps could be used (although
   it's unclear what non-global  avps could have made it so far
   so it's probably safer to say that in general no defined avps
   should be expected).
- no need to save or restore the avps after running the local req.
  route (they are reset anyway).

11 years agotm: local req. route: cache route id
Andrei Pelinescu-Onciul [Tue, 21 Jul 2009 09:58:51 +0000 (11:58 +0200)]
tm: local req. route: cache route id

- resolve the route name only once, at startup (mod_init since
  this route name is fixed) and cache it.
- more likely()/unlikely() added to the ifs (optimizing for no
  local req. route and local req. route not changing the message).

11 years agotm: local req. route: always free the tmp sip msg
Andrei Pelinescu-Onciul [Tue, 21 Jul 2009 09:25:39 +0000 (11:25 +0200)]
tm: local req. route: always free the tmp sip msg

11 years agotm: local req. route rcv init fix
Andrei Pelinescu-Onciul [Tue, 21 Jul 2009 09:10:48 +0000 (11:10 +0200)]
tm: local req. route rcv init fix

- dialog->send_sock can be null and should not be used (switched
  to dst.send_sock which is guaranteed to be non-null at that
  point)

- initialize also the other members of the msg rcv structure:
  dst_ip, dst_port, src_su, bind_address and dst.comp.
  Note: the rcv structure is initialized as if the message
  originated from the dst.send_sock, so in the script src_ip &
  friends will be the send ip. This is different from on_send
  route, were src_ip is the original forwarded message source and
  snd_ip is the send ip.

11 years agotmx(k): mi_tm_uac_dlg uris fix
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 16:28:03 +0000 (18:28 +0200)]
tmx(k): mi_tm_uac_dlg  uris fix

Replaced dlg.hooks.request_uri  with dlg.rem_uri and
dlg.hooks.next_hop with dlg.rem_target.
[ In sr tm the dialog hooks should not be changed, they are only
used for internal caching. Any change to the hooks will be lost
immediately after t_uac() is called (t_uac() re-calculates the
hooks each time it is called). One should use instead the
correspondent dlg structure members. ]

11 years agotm: rpc_uac* support
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 15:21:25 +0000 (17:21 +0200)]
tm: rpc_uac*  support

fifo/unixsock uac revived in rpc form and updated to the latest
tm:
 - tm.t_uac_start  - fifo_uac rpc equivalent with the following
   differences:
    * extra send_socket parameter for kamailio compatibility.
    * empty parameters can be specified either by '.' (backwards
       compatibility) or by "" (empty string).
    * it doesn't wait for the final reply and it doesn't include
      the sip reply in the rpc reply (it sends immediately an
      empty reply indicating only success or failure)
 - tm.t_uac_wait - like above, but it's supposed to wait and
   return the final reply. However right now it will only return
   an error (it's not yet fully implemented).

11 years agocore: parse_phostport split for k compatibility
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 11:00:37 +0000 (13:00 +0200)]
core: parse_phostport split for k compatibility

parse_phostport in sr and ser returned a list of pkg_malloc'ed
addresses belonging to the same multi-homed "group". For example
sctp:(1.2.3.4, 5.6.7.8):5080 is a valid address and it means
that this sctp listening socket must use multi-homing on the 2
IPs. However several kamailio modules use parse_phostport and
expect the old integer returning version. In this case it was
easier to split the function in the core into parse_phostport()
(old behaviour) and  parse_phostport_mh() (returns list of MH
addresses) and make the core command line parser use the MH
supporting version.

11 years agotmx(k): missing type for mi_tm_uac_dlg callback
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 08:21:36 +0000 (10:21 +0200)]
tmx(k): missing type for mi_tm_uac_dlg callback

sr tm t_uac() does not automatically register any transaction
callback (unlike old ser or kamailio versions). If a callback is
desired, besides the callback pointer, the callback type mask must
also be specified (in this case TMCB_LOCAL_COMPLETED).

11 years agotm: AS added needed membar
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 08:16:10 +0000 (10:16 +0200)]
tm: AS added needed membar

When compiled with -DWITH_AS_SUPPORT build_local_ack() needed
a membar_write_atomic_op() before setting the new local ack retr.
buf pointer (this will force the local_ack content to be fully
written before replacing the pointer and it's need on some non-x86
archs.).

11 years agotm: AS - fixed onsend callbacks invocation
Andrei Pelinescu-Onciul [Mon, 20 Jul 2009 08:13:47 +0000 (10:13 +0200)]
tm: AS - fixed onsend callbacks invocation

When compiled with WITH_AS_SUPPORT and TMCB_ONSEND,
ack_local_uac() used a wrong way for calling the onsend callbacks
(compile error).

11 years agodispatcher(k): safety checks for duri
Daniel-Constantin Mierla [Sun, 19 Jul 2009 15:37:22 +0000 (17:37 +0200)]
dispatcher(k): safety checks for duri

- due to usage of SR append_branch() instead of km_append_branch(), duri
  has to be checked before giving inner fields as parameters

11 years agodialog(k): fixed db initialization
Daniel-Constantin Mierla [Sun, 19 Jul 2009 15:19:25 +0000 (17:19 +0200)]
dialog(k): fixed db initialization

- child init DB initialization condition properly tests the db mode
- reported by Juha Heinanen

11 years agomakefile: don't install tls certs & cfg by default
Andrei Pelinescu-Onciul [Sat, 18 Jul 2009 09:24:19 +0000 (11:24 +0200)]
makefile: don't install tls certs & cfg by default

Install tls certs & cfg only if the tls module is installed (moved
certs & cfg installation from the main Makefile to the tls module
Makefile).

11 years agocore: script engine cleanups
Andrei Pelinescu-Onciul [Sat, 18 Jul 2009 09:05:05 +0000 (11:05 +0200)]
core: script engine cleanups

Use named enums for action types, expression types, expressions
left operands, expression right operands and action parameter
types. This should avoid future type mismatching bugs (like trying
 to compare a left expr. operand type with a type that can exist
 only on the right part) by triggering compile time warnings.
For extra protection the expression left operands and right
operands possible value do not overlap anymore.

11 years agocore: expr string length fixup fix
Andrei Pelinescu-Onciul [Sat, 18 Jul 2009 08:05:16 +0000 (10:05 +0200)]
core: expr string length fixup fix

- moved the string length fixup before the rve/rval optimisations:
  the string length fixup was executed after the rve/rval
  optimisations and would try to re-calculate the length of the
  string (which was already filled in by the optimizer). However
  the rval optimizer did not 0-terminate strings => this second
  re-calculation was wrong.

- the rve/rval optimiser 0 terminates strings (although not
  strictly needed it's better for debugging and would avoid
  problems similar to the above one).

- don't try to fix a string in the left side of an expression,
  there can be no strings there (and by chance
  METHOD_O==STRING_ST).

Reported-by: Juha Heinanen jh at tutpro com
11 years agocore: config parser minor fix
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 16:15:44 +0000 (18:15 +0200)]
core: config parser minor fix

- use a pkg_malloc'ed copy of yy_number_str for host_if_id
- always free ID/NUM_ID/host_if_id after copying them (bug
  introduced in the last merge)

11 years agoMerge commit 'origin/ser_core_cvs'
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 16:09:01 +0000 (18:09 +0200)]
Merge commit 'origin/ser_core_cvs'

* commit 'origin/ser_core_cvs':
  core: config parser listen if names fix
  core: config parser listen fix
  core: interface names in socket list port fix
  core: startup socket list fix
  core: parse_headers flags fix
  tm: fifo access From fix
  cfg framework: fix the group handles in the main process

Conflicts:
cfg.lex
cfg.y

11 years agoMerge commit 'origin/ser_modules'
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 15:45:40 +0000 (17:45 +0200)]
Merge commit 'origin/ser_modules'

* commit 'origin/ser_modules':
  - socket support
  - more -h messages
  - minor ERR message improvment
  presence_b2b: fix from & to header access
  rr: fix from header access

11 years agoMerge branch 'cvs-head' of ssh://git.sip-router.org/ser_modules into ser_modules
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 15:37:32 +0000 (17:37 +0200)]
Merge branch 'cvs-head' of ssh://git.sip-router.org/ser_modules into ser_modules

* 'cvs-head' of ssh://git.sip-router.org/ser_modules:
  - socket support
  - more -h messages
  - minor ERR message improvment
  presence_b2b: fix from & to header access
  rr: fix from header access

11 years agocore: expr =~ fixup order fix
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 15:10:07 +0000 (17:10 +0200)]
core: expr =~  fixup order fix

The fixup for built-in expressions were in the wrong order: first
RE and then RVE/RVALs, but a RVE/RVALs could be optimized away to
a string => because of the wrong order at runtime the match
operator might end up being used with a normal string instead of a
RE.
Now the order is RVE/RVALs fixup & optimisations, string fixups
(len) and then RE fixups (so that by the time the RE fixup is run
 we know the final type of its operand).

Reported-by: Nils Ohlmeier nils at iptel org
11 years agocore: config parser listen if names fix
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 13:37:11 +0000 (13:37 +0000)]
core: config parser listen if names fix

If no quotes were used in listen=x, it was assumed that x was an
ip or a valid hostname (each domain part starts with a letter,
numbers and '_' are not allowed as first chars). However this
assumption failed when interface names were used, e.g. eth0.1 is a
valid interface name, but listen=eth0.1 resulted in error (it
worked only if quotes were used, e.g. listen="eth0.1").

11 years agocore: config parser listen fix
Andrei Pelinescu-Onciul [Fri, 17 Jul 2009 13:37:01 +0000 (13:37 +0000)]
core: config parser listen fix

- do not crash when the listen=host line contains an invalid host (e.g. foo.1)
- more null checks

Reported-by: Cristian Constantin cristian.constantin at iptel org
11 years agodomain: Documentation of internal API
Jan Janak [Fri, 17 Jul 2009 09:34:24 +0000 (11:34 +0200)]
domain: Documentation of internal API

Add docbook documentation for the internal API of domain module.

11 years agodomain: Add internal function is_domain_local
Jan Janak [Fri, 17 Jul 2009 09:10:51 +0000 (11:10 +0200)]
domain: Add internal function is_domain_local

Add internal function is_domain_local that can be used to determine if
the domain name given in parameter is on the list of local domains. The
comparison of the domain name is always case insensitive.

There already is is_local function that does something similar, so we
can reuse the code from that function. is_domain_local takes a pointer
to str as parameter and this function is then called by is_local which
takes all the usual parameters that function which can be called from
the script take.

Finally, is_domain_local is exported through the internal API of the
domain module.

Function is_domain_local is now located in file domain.c and because of
db_get_did was also moved to file domain.c