New upstream version 5.5.6

mr9.5.7 upstream/5.5.6
Victor Seva 2 years ago
parent 732882d4b3
commit ac48a83ebe

File diff suppressed because it is too large Load Diff

@ -1157,7 +1157,7 @@ PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# generate an inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option is superseded by the HAVE_DOT option below. This is only a
# fallback. It is recommended to install and use dot, since it yields more

@ -166,11 +166,6 @@ Specifies the number of children processes forked to handle tcp incoming connect
.BI \-n
).
.TP
.BI \-P " pid\-file"
Creates a file containing the pid of the main
.B kamailio
process.
.TP
.BI \-O " optimization\-level"
Script optimization level (debugging option).
.TP

@ -23,7 +23,7 @@ A short time after this Jiri began testing the code and requesting new features.
In Octomber 2001 I made some changes to ser routing language bringing it to what we still use today.
In the next months I've created the module interface, the first two modules (print and textops) and I've added the shared memory support (this involved the creation of ser's own malloc library which proved to be much faster for ser's memory usage patterns than standards malloc implementations).
During the same period Bogdan and Jan joined me and Jiri also began writing code.
In December 2001 Bogdan announced that tm was up an running (after a sleepless night).
In December 2001 Bogdan announced that tm was up and running (after a sleepless night).
At the beginning of 2002 we were joined by Daniel. Jan introduced the mysql, usrloc and auth modules.
Ser first public appearance was at the April 2002 Sipit. We ran it on a pda an still managed to be faster than the testing tools that were used against us :-)

@ -924,7 +924,7 @@ core:
Only a limited number of commands are allowed (drop, if
+ all the checks, msg flag manipulations, send(), log(),
textops::search()). In this route the final destination
of the message is available an can be checked (with
of the message is available and can be checked (with
snd_ip, snd_port, to_ip, to_port, snd_proto, snd_af).
This route is executed only when forwarding requests.
It's not executed for replies, retransmissions, or

@ -26,7 +26,7 @@ RPC Exports for usrloc
<section id="ul.rm"><title>ul.rm</title>
<para>
Delete a address of record including its contacts
Delete an address of record including its contacts
</para>
<para>
</para>

@ -40,7 +40,7 @@
<para>
A <acronym>SIP</acronym> message consists of message header and
optional message body. The header is separated from the body with
a empty line (containing CRLF only).
an empty line (containing CRLF only).
</para>
<para>
Message header consists of the first line and one or more header

@ -339,7 +339,7 @@ struct sip_msg {
<emphasis>REQUEST</emphasis> before it will be
forwarded. The list will be processed when the request is
being converted to character array (i.e. immediately before
the request will be send out).
the request will be sent out).
</para>
</listitem>
<listitem>
@ -349,7 +349,7 @@ struct sip_msg {
<emphasis>REPLY</emphasis> before it will be forwarded. the
list will be processed when the reply is being converted to
character array (i.e. immediately before the request will
be send out).
be sent out).
</para>
</listitem>
<listitem>

@ -100,7 +100,7 @@ A "fast" timer is a timer that does very little work in its timer handler (it al
4.2 timer handlers
------------------
The timer handler can be periodic, one shot or it can change from call to call. It all depends on what value you return from it. If you always return (ticks_t)(-1) or timer_ln->initial_timeout you have a periodic timer. If you return 0 you have an one shot timer (the timer will be removed when your timer handler function exits). For any other value v, your timer will be automatically re-added with the next expire set to v (expressed in ticks).
The timer handler can be periodic, one shot or it can change from call to call. It all depends on what value you return from it. If you always return (ticks_t)(-1) or timer_ln->initial_timeout you have a periodic timer. If you return 0 you have a one shot timer (the timer will be removed when your timer handler function exits). For any other value v, your timer will be automatically re-added with the next expire set to v (expressed in ticks).
4.3 timer_add
-------------
@ -118,7 +118,7 @@ To remove a timer from the active timer list call timer_del(struct timer_ln*).
timer_del is the slowest of all the timer functions. If you are trying to delete a timer whose timer is executing. timer_del will wait until it finishes.
timer_del returns 0 on success and a negative number on error (for now -1 if an attempt to delete and already removed or expired timer is made and -2 if timer_del is called from the timer handle it is supposed to delete).
WARNING: - avoid deleting your own timer from its timer handle (if you try it, you'll get a BUG message in the log). If you _must_ have this, you have a broken design. If you still want it, look at timer_allow_del().
- if you have an one shot timer that frees its memory before exiting, make sure you don't call timer_del afterwards (e.g. use some reference counters and free the memory only if the counter is 0).
- if you have a one shot timer that frees its memory before exiting, make sure you don't call timer_del afterwards (e.g. use some reference counters and free the memory only if the counter is 0).
Race example (using the struct foo defined above):

@ -117,7 +117,7 @@ modparam("usrloc", "db_mode", 2)
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# If you set "calculate_ha1" parameter to yes (which is true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")

@ -113,8 +113,8 @@ route{
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
# the received test, if completed, should check all
# vias for presence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is

@ -107,7 +107,7 @@ route{
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
# vias for presence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is

@ -683,7 +683,7 @@ route[FORWARD]
}
# Activate the RTP proxy as the second last step because it modifies the
# body but also sets an dialog AVP cookie.
# body but also sets a dialog AVP cookie.
route(RTPPROXY);
# Insert a Record-Route header into all requests.

@ -128,7 +128,7 @@ if [ ! -e $LOCKF ] ; then
echo " Please configure it to your local settings first."
echo
echo "If you do not press CTRL-C within 2 seconds an informational message"
echo "with your hostname will be send to the ser developers."
echo "with your hostname will be sent to the ser developers."
sleep 2
$MAILCOMMAND -s "serresponse executed on ${HOSTN}" $NOTIFY < $TMP
rm -f $TMP

@ -4,7 +4,7 @@
# Maintainer: Nathan Angelacos <nangel@alpinelinux.org>
pkgname=kamailio
pkgver=5.5.5
pkgver=5.5.6
pkgrel=0
# If building from a git snapshot, specify the gitcommit

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,3 +1,9 @@
kamailio (5.5.6) unstable; urgency=medium
* version set 5.5.6
-- Victor Seva <vseva@debian.org> Thu, 02 Mar 2023 10:27:30 +0100
kamailio (5.5.5) unstable; urgency=medium
* version set 5.5.5

@ -1,5 +1,5 @@
%define name kamailio
%define ver 5.5.5
%define ver 5.5.6
%define rel dev1.0%{dist}
%if 0%{?fedora}
@ -728,8 +728,11 @@ BuildRequires: zlib-devel
Requires: libmysqlclient18
BuildRequires: libmysqlclient-devel
%else
Requires: mysql-libs
%if 0%{?rhel} == 6
BuildRequires: mysql-devel
%else
BuildRequires: mariadb-devel
%endif
%endif
%description mysql

@ -28,7 +28,7 @@ include Makefile.sources
include Makefile.targets
# whether or not the entire build process should fail if building a module or
# an utility fails
# a utility fails
err_fail?=1
# whether or not to install $(MAIN_NAME).cfg or just $(MAIN_NAME).cfg.default

@ -106,7 +106,7 @@ INSTALL_FLAVOUR=$(FLAVOUR)
# version number
VERSION = 5
PATCHLEVEL = 5
SUBLEVEL = 5
SUBLEVEL = 6
EXTRAVERSION =
# memory manager switcher

@ -30,7 +30,7 @@ COREPATH ?=../../src
ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \
$(COREPATH)/Makefile.utils $(COREPATH)/Makefile.dirs $(COREPATH)/config.mak
#override modules value, an util cannot have submodules
#override modules value, a util cannot have submodules
override modules=
override static_modules=
override static_modules_path=

@ -918,7 +918,7 @@ int do_action(struct run_act_ctx* h, struct action* a, struct sip_msg* msg)
if (len){
if(crt+len>end) goto error_uri;
memcpy(crt,tmp,len);crt+=len;
user=1; /* we have an user field so mark it */
user=1; /* we have a user field so mark it */
}
if (a->type==SET_USERPASS_T) tmp=0;

@ -2,6 +2,6 @@
* DO NOT EDIT IT
*/
#define REPO_VER "c26b6d"
#define REPO_HASH "c26b6d"
#define REPO_VER "72dbb0"
#define REPO_HASH "72dbb0"
#define REPO_STATE ""

@ -79,7 +79,7 @@
#elif defined __CPU_x86 || defined __CPU_x86_64
/* no asm (e.g. no CC_GCC_LIKE_ASM) => debruijn for bit_scan_forward and
* br for bit_scan_reverse */
/* make sure debruijn an branch version are enabled */
/* make sure debruijn and branch version are enabled */
#ifndef BIT_SCAN_DEBRUIJN
#define BIT_SCAN_DEBRUIJN
#endif
@ -117,7 +117,7 @@
#else /* __CPU_XXX */
/* default - like x86 no asm */
/* make sure debruijn an branch version are enabled */
/* make sure debruijn and branch version are enabled */
#ifndef BIT_SCAN_DEBRUIJN
#define BIT_SCAN_DEBRUIJN
#endif

@ -1099,7 +1099,7 @@ error:
* Both parameters can be NULL meaning that the src/dst config is the default,
* not an additional group instance.
* The function executes all the per-child process callbacks which are different
* in the two instaces.
* in the two instances.
*/
void cfg_move_handle(cfg_group_t *group, cfg_group_inst_t *src_ginst, cfg_group_inst_t *dst_ginst)
{

@ -299,7 +299,7 @@ static inline void cfg_child_cb_free_item(cfg_child_cb_t *cb)
* Both parameters can be NULL meaning that the src/dst config is the default,
* not an additional group instance.
* The function executes all the per-child process callbacks which are different
* in the two instaces.
* in the two instances.
*/
void cfg_move_handle(cfg_group_t *group, cfg_group_inst_t *src_ginst, cfg_group_inst_t *dst_ginst);

@ -111,7 +111,7 @@ retry:
/** wait for an exit status to be send by daemon_status_send().
/** wait for an exit status to be sent by daemon_status_send().
* @param status - filled with the sent status (a char).
* @return 0 on success, -1 on error (e.g. process died before sending
* status, not initialized a.s.o.).

@ -779,7 +779,7 @@ inline static struct dns_hash_entry* dns_cache_mk_bad_entry(str* name,
/* create a a/aaaa hash entry from a name and ip address
/* create an a/aaaa hash entry from a name and ip address
* returns 0 on error */
inline static struct dns_hash_entry* dns_cache_mk_ip_entry(str* name,
struct ip_addr* ip)

@ -257,7 +257,7 @@ again:
BUG("kq_ev_change: kevent flush changes failed"
" (unexpected error): %s [%d]\n",
strerror(errno), errno);
/* ignore error even if it's not a EBADF/ENOENT */
/* ignore error even if it's not an EBADF/ENOENT */
/* one of the file descriptors is bad, probably already
closed => try to apply changes one-by-one */
for (r = 0; r < h->kq_nchanges; r++) {

@ -1260,7 +1260,7 @@ extern void* sbrk(ptrdiff_t);
/* The bit mask value corresponding to MALLOC_ALIGNMENT */
#define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE)
/* True if address a has acceptable alignment */
/* True if address A has acceptable alignment */
#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0)
/* the number of bytes to offset an address to align it */

@ -53,7 +53,7 @@
* lookup is performed on the host part and the reply is sent to the
* resulting ip. If a port is present or the host part is an ip address
* the dns lookup will be a "normal" one (A or AAAA).
* - if rport is present, it's value will be used as the destination port
* - if rport is present, its value will be used as the destination port
* (and this will also disable srv lookups)
* - if no port is present the destination port will be taken from the srv
* lookup. If the srv lookup fails or is not performed (e.g. ip address
@ -1459,7 +1459,7 @@ skip_nop_before:
/* skip len bytes from orig msg */
s_offset+=t->len;
} else if (t->op==LUMP_DEL && flag == FLAG_MSG_LUMPS_ONLY) {
/* copy lump value and indent as necessarely */
/* copy lump value and indent as necessarily */
memcpy(new_buf+offset, orig + t->u.offset, t->len);
offset+=t->len;
if (new_buf[offset-1] != '\n') {
@ -1592,7 +1592,7 @@ static inline int adjust_clen(struct sip_msg* msg, int body_delta, int proto)
/* The body has been changed, try to find
* existing Content-Length
*/
/* no need for Content-Length if it's and UDP packet and
/* no need for Content-Length if it's an UDP packet and
* it hasn't Content-Length already */
if (msg->content_length==0){
/* content-length doesn't exist, append it */
@ -1938,7 +1938,7 @@ clean:
/** builds a request in memory from another sip request.
*
* Side-effects: - it adds lumps to the msg which are _not_ cleaned.
* The added lumps are HDR_VIA_T (almost always added), HDR_CONTENLENGTH_T
* The added lumps are HDR_VIA_T (almost always added), HDR_CONTENTLENGTH_T
* and HDR_ROUTE_T (when a Route: header is added as a result of a non-null
* msg->path_vec).
* - it might change send_info->proto and send_info->send_socket
@ -2109,7 +2109,7 @@ after_local_via:
}
received_buf = NULL;
}
/* if rport needs to be updated, delete it if present and add it's value */
/* if rport needs to be updated, delete it if present and add its value */
if (rport_buf){
if (msg->via1->rport){ /* rport already present */
via_insert_param=del_lump(msg,
@ -3075,7 +3075,7 @@ char* create_via_hf(unsigned int *len,
/* builds a char* buffer from message headers without body
* first line is excluded in case of skip_first_line=1
* error is set -1 if the memory allocation failes
* error is set -1 if the memory allocation fails
*/
char * build_only_headers( struct sip_msg* msg, int skip_first_line,
unsigned int *returned_len,
@ -3127,7 +3127,7 @@ char * build_only_headers( struct sip_msg* msg, int skip_first_line,
}
/* builds a char* buffer from message body
* error is set -1 if the memory allocation failes
* error is set -1 if the memory allocation fails
*/
char * build_body( struct sip_msg* msg,
unsigned int *returned_len,
@ -3253,7 +3253,7 @@ int build_sip_msg_from_buf(struct sip_msg *msg, char *buf, int len,
msg->buf = buf;
msg->len = len;
if (parse_msg(buf, len, msg)!=0) {
LM_ERR("parsing failed");
LM_ERR("parsing failed\n");
return -1;
}
msg->set_global_address=default_global_address;

@ -61,7 +61,7 @@ static inline int new_credentials(struct hdr_field* _h)
* Return value -1 means that the function was unable to allocate
* memory and therefore the server should return Internal Server Error,
* not Bad Request in this case !
* Bad Request should be send when return value != -1
* Bad Request should be sent when return value != -1
*/
int parse_credentials(struct hdr_field* _h)
{

@ -231,6 +231,7 @@ static inline int hdr_allocs_parse(struct hdr_field* hdr)
case HDR_PROXYAUTH_T:
case HDR_RECORDROUTE_T:
case HDR_REFER_TO_T:
case HDR_REQUIRE_T:
case HDR_ROUTE_T:
case HDR_RPID_T:
case HDR_SESSIONEXPIRES_T:

@ -91,7 +91,7 @@ struct mime_type {
/*! \brief
* returns the accept values of a sip_msg as an null-terminated array
* returns the accept values of a sip_msg as a null-terminated array
* of integer
*/
#define get_accept(_msg_) ((int*)((_msg_)->accept->parsed))
@ -109,7 +109,7 @@ int parse_accept_body(struct hdr_field* const hdr);
/*! \brief
* parse the body of the Accept header. It's values are also converted
* as an null-terminated array of ints.
* as a null-terminated array of ints.
* Returns: 1 : OK
* 0 : hdr not found
* -1 : error (parse error)
@ -119,7 +119,7 @@ int parse_accept_hdr(struct sip_msg* const msg);
/*! \brief
* parse the body of a Content_-Length header. Also tries to recognize the
* type specified by this header (see th above defines).
* type specified by this header (see the above defines).
* Returns the first chr after the end of the header.
*/
char* parse_content_length(char* const buffer, const char* const end, int* const length);

@ -552,7 +552,7 @@ static int parse_sdp_session(str *sdp_body, int session_num, str *cnt_disp, sdp_
}
payload_attr = 0;
/* Let's figure out the atributes */
/* Let's figure out the attributes */
a1p = find_sdp_line(m1p, m2p, 'a');
a2p = a1p;
for (;;) {

@ -229,7 +229,7 @@ int route_get(struct route_list* rt, char* name)
int i;
len=strlen(name);
/* check if exists an non empty*/
/* check if exists and non empty*/
e=str_hash_get(&rt->names, name, len);
if (e){
i=e->u.n;
@ -258,7 +258,7 @@ int route_lookup(struct route_list* rt, char* name)
struct str_hash_entry* e;
len=strlen(name);
/* check if exists an non empty*/
/* check if exists and non empty*/
e=str_hash_get(&rt->names, name, len);
if (e){
return e->u.n;

@ -2690,7 +2690,7 @@ struct rval_expr* mk_rval_expr_v(enum rval_type rv_type, void* val,
/**
* @brief Create a unary op. rval_expr
* @brief Create an unary op. rval_expr
* ret= op rve1
* @param op - rval expr. unary operator
* @param rve1 - rval expr. on which the operator will act.
@ -3652,7 +3652,7 @@ static int rve_optimize(struct rval_expr* rve)
if (rve_replace_with_ct_rv(rve->right.rve, rv)<0)
goto error;
rve->op=RVE_IPLUS_OP;
LM_DBG("FIXUP RVE (%d,%d-%d,%d): optimized $v - a into "
LM_DBG("FIXUP RVE (%d,%d-%d,%d): optimized $v - an into "
"$v + (%d)\n",
rve->fpos.s_line, rve->fpos.s_col,
rve->fpos.e_line, rve->fpos.e_col,

@ -296,7 +296,7 @@ struct rval_expr* mk_rval_expr_v(enum rval_type rv_type, void* val,
struct cfg_pos* pos);
/**
* @brief Create a unary op. rval_expr
* @brief Create an unary op. rval_expr
* ret= op rve1
* @param op - rval expr. unary operator
* @param rve1 - rval expr. on which the operator will act.

@ -1494,7 +1494,7 @@ static int fix_hostname(str* name, struct ip_addr* address, str* address_str,
}
#ifdef USE_MCAST
/* Check if it is an multicast address and
/* Check if it is a multicast address and
* set the flag if so
*/
if (is_mcast(address)){

@ -2002,8 +2002,10 @@ int tcp_send(struct dest_info* dst, union sockaddr_union* from,
}
/* check if connect() is disabled */
if (unlikely((dst->send_flags.f & SND_F_FORCE_CON_REUSE) ||
cfg_get(tcp, tcp_cfg, no_connect)))
cfg_get(tcp, tcp_cfg, no_connect))) {
LM_DBG("no connect set and no active connection\n");
return -1;
}
LM_DBG("no open tcp connection found, opening new one\n");
/* create tcp connection */
if (likely(from==0)){

@ -647,7 +647,7 @@ static inline void strlower(str* _s)
} while(0)
/*
* Convert an str to unsigned long
* Convert a str to unsigned long
*/
static inline int str2ulong(str* _s, unsigned long* _r)
{
@ -655,7 +655,7 @@ static inline int str2ulong(str* _s, unsigned long* _r)
}
/*
* Convert an str to unsigned integer
* Convert a str to unsigned integer
*/
static inline int str2int(str* _s, unsigned int* _r)
{

@ -698,7 +698,7 @@ int binrpc_get_response_type(struct binrpc_response_handle *resp_handle)
* and stops at each %v, returning a pointer after the %v, setting *size
* to the string length (not including %v) and *type to the corresponding
* BINRPC type (for now only BINRPC_T_ALL).
* To escape a '%', use "%%", and check for type==-1 (which means skip an call
* To escape a '%', use "%%", and check for type==-1 (which means skip a call
* again parse_fmt).
* Usage:
* n="test: %v,%v,%v\n";

@ -1247,12 +1247,13 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str * icid, str * orig_ioi,
LM_DBG("p_charging_vector body is %.*s\n", header_body.len, header_body.s);
p = strtok(header_body.s, " ;:\r\t\n\"=");
loop: if (p > (header_body.s + header_body.len))
loop:
if (p == NULL || p > (header_body.s + header_body.len))
return 1;
if (strncmp(p, "icid-value", 10) == 0) {
p = strtok(NULL, " ;:\r\t\n\"=");
if (p > (header_body.s + header_body.len)) {
if (p == NULL || p > (header_body.s + header_body.len)) {
LM_ERR("cscf_get_p_charging_vector: no value for icid\n");
return 0;
}
@ -1272,7 +1273,7 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str * icid, str * orig_ioi,
} else if (strncmp(p, "orig-ioi", 8) == 0) {
p = strtok(NULL, " ;:\r\t\n\"=");
if (p > (header_body.s + header_body.len)) {
if (p == NULL || p > (header_body.s + header_body.len)) {
LM_ERR("cscf_get_p_charging_vector: no value for icid\n");
return 0;
}
@ -1292,7 +1293,7 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str * icid, str * orig_ioi,
} else if (strncmp(p, "term-ioi", 8) == 0) {
p = strtok(NULL, " ;:\r\t\n\"=");
if (p > (header_body.s + header_body.len)) {
if (p == NULL || p > (header_body.s + header_body.len)) {
LM_ERR("cscf_get_p_charging_vector: no value for icid\n");
return 0;
}

@ -21,7 +21,7 @@
/**
* \file lib/srdb1/db_op.h
* \brief Type that represents a expression operator.
* \brief Type that represents an expression operator.
* \ingroup db1
*/

@ -45,7 +45,7 @@
<type>char</type>
<size>1</size>
<default>0</default>
<description>Specify if this a blocklist (0) or a allowlist (1) entry.</description>
<description>Specify if this is a blocklist (0) or an allowlist (1) entry.</description>
</column>
<column>

@ -62,7 +62,7 @@
<type>char</type>
<size>1</size>
<default>0</default>
<description>Specify if this a blocklist (0) or a allowlist (1) entry.</description>
<description>Specify if this is a blocklist (0) or an allowlist (1) entry.</description>
</column>
<index>

@ -574,8 +574,8 @@ Note
it is necessary to store the caller and callee for each leg. All this
helps to identify the involved phone partners and forwarding chain.
When you route such calls multiple times to the same Proxy, you could
store the caller and callee within an transaction based avp and write
it into the dialog based dlg_var pv during a 200 INVITE.
store the caller and callee within a transaction based avp and write it
into the dialog based dlg_var pv during a 200 INVITE.
4.3.2.1. Example for a spiraled Proxy

@ -905,7 +905,7 @@ int set_cdr_extra( char* cdr_extra_value)
return 0;
}
/* convert the facility-name string into a id and store it */
/* convert the facility-name string into an id and store it */
int set_cdr_facility( char* cdr_facility_str)
{
int facility_id = -1;
@ -953,7 +953,7 @@ int init_cdr_generation( void)
return 0;
}
/* convert the facility-name string into a id and store it */
/* convert the facility-name string into an id and store it */
void destroy_cdr_generation( void)
{
if( !cdr_extra)

@ -93,25 +93,20 @@ void env_set_totag(struct cell *t, struct sip_msg *reply)
tmb.t_get_reply_totag(t->uas.request, &acc_env.to_tag);
}
int env_set_reason(struct sip_msg *reply, str *buff) {
int i;
char *p;
int env_set_reason(struct sip_msg *reply, str *buff, int code) {
if (reply!=FAKED_REPLY || !buff || !buff->s || buff->len < 20)
return 0;
if (strncmp(buff->s, "SIP/2.0 ", 8) != 0) {
LM_ERR("not a SIP reply\n");
return 0;
}
p = buff->s + 12;
for (i=12;i<buff->len;i++) {
if (*p == '\r' || *p == '\n') {
acc_env.reason.s = buff->s+12;
acc_env.reason.len = i-12;
/* Set the reason to a pointer in heap memory. It will contain the last seen FAKED_REPLY */
acc_env.reason.s = error_text(code);
acc_env.reason.len = strlen(acc_env.reason.s);
LM_DBG("reason[%.*s]\n", acc_env.reason.len, acc_env.reason.s);
return 1;
}
p++;
}
return 0;
}
@ -139,7 +134,8 @@ static inline void env_set_code_status( int code, struct sip_msg *reply)
acc_env.code_s.s =
int2bstr((unsigned long)code, code_buf, &acc_env.code_s.len);
/* reason */
if (acc_env.reason.len == 0) { /* already extracted in case of locally generated replies */
/* In case of an ACK the reply == NULL, but the reason must be set when report_ack is 1 */
if (acc_env.reason.len == 0 || reply==NULL) { /* already extracted in case of locally generated replies */
acc_env.reason.s = error_text(code);
acc_env.reason.len = strlen(acc_env.reason.s);
}
@ -719,7 +715,7 @@ static void tmcb_func( struct cell* t, int type, struct tmcb_params *ps )
LM_DBG("acc callback called for t(%p) event type %d, reply code %d\n",
t, type, ps->code);
if (type&TMCB_RESPONSE_OUT) {
env_set_reason(ps->rpl, &ps->send_buf);
env_set_reason(ps->rpl, &ps->send_buf, ps->code);
acc_onreply( t, ps->req, ps->rpl, ps->code);
} else if (type&TMCB_E2EACK_IN) {
acc_onack( t, t->uas.request, ps->req, ps->code);

@ -384,7 +384,7 @@ if (uri=~"sip:+40") /* calls to Romania */ {
(e.g. chain=B;cfa;C|C;cfnr;D). Additionally it is necessary to store the
caller and callee for each leg. All this helps to identify the involved
phone partners and forwarding chain. When you route such calls multiple times
to the same Proxy, you could store the caller and callee within an transaction
to the same Proxy, you could store the caller and callee within a transaction
based avp and write it into the dialog based dlg_var pv during a 200 INVITE.
</para>
<section>

@ -54,7 +54,7 @@
( (_len_)+(((_len_)&3)?4-((_len_)&3):0) )
/*! \brief from a AAAMessage structure, a buffer to be send is build
/*! \brief from an AAAMessage structure, a buffer to be sent is build
*/
AAAReturnCode AAABuildMsgBuffer( AAAMessage *msg )
{

@ -134,7 +134,7 @@ int tcp_send_recv(int sfd, char* buf, int len, rd_buf_t* rb,
LM_ERR("no response received\n");
// return AAA_ERROR;
}
*/ /* Data arriving on a already-connected socket. */
*/ /* Data arriving on an already-connected socket. */
reset_read_buffer(rb);
switch( do_read(sfd, rb) )
{

@ -20034,7 +20034,7 @@ DUK_EXTERNAL void *duk_require_buffer(duk_hthread *thr, duk_idx_t idx, duk_size_
}
/* Get the active buffer data area for a plain buffer or a buffer object.
* Return NULL if the the value is not a buffer. Note that a buffer may
* Return NULL if the value is not a buffer. Note that a buffer may
* have a NULL data pointer when its size is zero, the optional 'out_isbuffer'
* argument allows caller to detect this reliably.
*/
@ -26050,7 +26050,7 @@ DUK_LOCAL duk_small_int_t duk__array_sort_compare(duk_hthread *thr, duk_int_t id
/* Fast exit if indices are identical. This is valid for a non-existent property,
* for an undefined value, and almost always for ToString() coerced comparison of
* arbitrary values (corner cases where this is not the case include e.g. a an
* arbitrary values (corner cases where this is not the case include e.g. an
* object with varying ToString() coercion).
*
* The specification does not prohibit "caching" of values read from the array, so
@ -29109,7 +29109,7 @@ DUK_INTERNAL duk_ret_t duk_bi_buffer_slice_shared(duk_hthread *thr) {
*
* Node.js Buffers have special handling: they're Uint8Arrays as far
* as the internal class is concerned, so the new Buffer should also
* be an Uint8Array but inherit from Buffer.prototype.
* be a Uint8Array but inherit from Buffer.prototype.
*/
res_class_num = DUK_HOBJECT_GET_CLASS_NUMBER((duk_hobject *) h_this);
DUK_ASSERT(res_class_num >= DUK_HOBJECT_CLASS_BUFOBJ_MIN); /* type check guarantees */
@ -50926,7 +50926,7 @@ DUK_INTERNAL void duk_heap_process_finalize_list(duk_heap *heap) {
}
/*
* Run an duk_hobject finalizer. Must never throw an uncaught error
* Run a duk_hobject finalizer. Must never throw an uncaught error
* (but may throw caught errors).
*
* There is no return value. Any return value or error thrown by
@ -55598,7 +55598,7 @@ DUK_LOCAL void *duk__hobject_alloc_init(duk_hthread *thr, duk_uint_t hobject_fla
}
/*
* Allocate an duk_hobject.
* Allocate a duk_hobject.
*
* The allocated object has no allocation for properties; the caller may
* want to force a resize if a desired size is known.
@ -56981,7 +56981,7 @@ DUK_INTERNAL duk_uint_fast32_t duk_hobject_pc2line_query(duk_hthread *thr, duk_i
* duk_tval copies is not problematic with respect to side effects;
* care must be taken when holding and using argument duk_tval pointers.
*
* - If a finalizer is executed, it may operate on the the same object
* - If a finalizer is executed, it may operate on the same object
* we're currently dealing with. For instance, the finalizer might
* delete a certain property which has already been looked up and
* confirmed to exist. Ideally finalizers would be disabled if GC
@ -69944,7 +69944,7 @@ DUK_LOCAL duk_bool_t duk__const_needs_refcount(duk_compiler_ctx *comp_ctx, duk_r
#endif
}
/* Get the value represented by an duk_ispec to a register or constant.
/* Get the value represented by a duk_ispec to a register or constant.
* The caller can control the result by indicating whether or not:
*
* (1) a constant is allowed (sometimes the caller needs the result to
@ -70138,7 +70138,7 @@ DUK_LOCAL void duk__ispec_toforcedreg(duk_compiler_ctx *comp_ctx, duk_ispec *x,
(void) duk__ispec_toregconst_raw(comp_ctx, x, forced_reg, 0 /*flags*/);
}
/* Coerce an duk_ivalue to a 'plain' value by generating the necessary
/* Coerce a duk_ivalue to a 'plain' value by generating the necessary
* arithmetic operations, property access, or variable access bytecode.
* The duk_ivalue argument ('x') is converted into a plain value as a
* side effect.
@ -70351,7 +70351,7 @@ DUK_LOCAL void duk__ivalue_toplain_ignore(duk_compiler_ctx *comp_ctx, duk_ivalue
DUK__SETTEMP(comp_ctx, temp);
}
/* Coerce an duk_ivalue to a register or constant; result register may
/* Coerce a duk_ivalue to a register or constant; result register may
* be a temp or a bound register.
*
* The duk_ivalue argument ('x') is converted into a regconst as a
@ -72523,7 +72523,7 @@ DUK_LOCAL void duk__expr_led(duk_compiler_ctx *comp_ctx, duk_ivalue *left, duk_i
/* At this point 'res' holds the potential expression value.
* It can be basically any ivalue here, including a reg-bound
* identifier (if code above deems it safe) or a unary/binary
* identifier (if code above deems it safe) or an unary/binary
* operation. Operations must be resolved to a side effect free
* plain value, and the side effects must happen exactly once.
*/
@ -80324,7 +80324,7 @@ DUK_LOCAL DUK_NOINLINE DUK_HOT void duk__js_execute_bytecode_inner(duk_hthread *
is_func_decl = ((a & DUK_BC_DECLVAR_FLAG_FUNC_DECL) != 0);
/* XXX: declvar takes an duk_tval pointer, which is awkward and
/* XXX: declvar takes a duk_tval pointer, which is awkward and
* should be reworked.
*/
@ -81305,12 +81305,12 @@ DUK_LOCAL DUK_NOINLINE DUK_HOT void duk__js_execute_bytecode_inner(duk_hthread *
* the operation:
*
* - If an operation is simple and stateless, and has no side
* effects, it won't take an duk_hthread argument and its
* effects, it won't take a duk_hthread argument and its
* arguments may be duk_tval pointers (which are safe as long
* as no side effects take place).
*
* - If complex coercions are required (e.g. a "ToNumber" coercion)
* or errors may be thrown, the operation takes an duk_hthread
* or errors may be thrown, the operation takes a duk_hthread
* argument. This also implies that the operation may have
* arbitrary side effects, invalidating any duk_tval pointers.
*
@ -83755,7 +83755,7 @@ duk_bool_t duk__get_identifier_reference(duk_hthread *thr,
*
* Identifiers can never be stored in ancestors and are
* always plain values, so we can use an internal helper
* and access the value directly with an duk_tval ptr.
* and access the value directly with a duk_tval ptr.
*
* A closed environment is only indicated by it missing
* the "book-keeping" properties required for accessing
@ -84572,7 +84572,7 @@ duk_bool_t duk_js_declvar_activation(duk_hthread *thr,
* Lexer for source files, ToNumber() string conversions, RegExp expressions,
* and JSON.
*
* Provides a stream of ECMAScript tokens from an UTF-8/CESU-8 buffer. The
* Provides a stream of ECMAScript tokens from a UTF-8/CESU-8 buffer. The
* caller can also rewind the token stream into a certain position which is
* needed by the compiler part for multi-pass scanning. Tokens are
* represented as duk_token structures, and contain line number information.
@ -85540,12 +85540,12 @@ DUK_LOCAL void duk__lexer_skip_to_endofline(duk_lexer_ctx *lex_ctx) {
*
* White space is automatically skipped from the current position (but
* not after the input element). If input has already ended, returns
* DUK_TOK_EOF indefinitely. If a parse error occurs, uses an DUK_ERROR()
* DUK_TOK_EOF indefinitely. If a parse error occurs, uses a DUK_ERROR()
* macro call (and hence a longjmp through current heap longjmp context).
* Comments and line terminator tokens are automatically skipped.
*
* The input element being matched is determined by regexp_mode; if set,
* parses a InputElementRegExp, otherwise a InputElementDiv. The
* parses an InputElementRegExp, otherwise an InputElementDiv. The
* difference between these are handling of productions starting with a
* forward slash.
*

@ -649,9 +649,9 @@ Kamailio::log(L_INFO, "foobar");
2.19. append_branch(branch,qval)
2.20. getParsedRURI()
This package provides access functions for an Kamailio sip_msg
structure and its sub-components. Through its means it is possible to
fully configure alternative routing decisions.
This package provides access functions for a Kamailio sip_msg structure
and its sub-components. Through its means it is possible to fully
configure alternative routing decisions.
2.1. getType()
@ -890,7 +890,7 @@ if ($m->getRURI() =~ m/\@somedomain.net/) {
2.20. getParsedRURI()
Returns the current destination URI as an Kamailio::URI object.
Returns the current destination URI as a Kamailio::URI object.
3. Kamailio::URI
@ -1015,7 +1015,7 @@ if ($m->getRURI() =~ m/\@somedomain.net/) {
Add an AVP.
Add an Kamailio AVP to its environment. name and val may both be
Add a Kamailio AVP to its environment. name and val may both be
integers or strings; this function will try to guess what is correct.
Please note that
Kamailio::AVP::add("10", "10")
@ -1030,7 +1030,7 @@ Kamailio::AVP::add(10, 10)
4.2. get(name)
get an Kamailio AVP:
get a Kamailio AVP:
my $numavp = Kamailio::AVP::get(5);
my $stravp = Kamailio::AVP::get("foo");

@ -47,7 +47,7 @@
</section>
<section id="ID-949656abaac653354242d1d0e9b418be"><title>Kamailio::Message</title>
<para>
This package provides access functions for an Kamailio <literal
This package provides access functions for a Kamailio <literal
role="code"><![CDATA[sip_msg]]></literal> structure and its
sub-components. Through its means it is possible to fully configure
alternative routing decisions.
@ -335,7 +335,7 @@ $m->xlog("L_INFO", "foo");]]></screen>
</section>
<section id="ID-f20c57aaa92a757d7152aa0479ee1fc0"><title>getParsedRURI()</title>
<para>
Returns the current destination URI as an Kamailio::URI object.
Returns the current destination URI as a Kamailio::URI object.
</para>
</section>
</section>
@ -460,7 +460,7 @@ $m->xlog("L_INFO", "foo");]]></screen>
Add an AVP.
</para>
<para>
Add an Kamailio AVP to its environment. name and val may both be
Add a Kamailio AVP to its environment. name and val may both be
integers or strings; this function will try to guess what is
correct. Please note that
</para>
@ -479,7 +479,7 @@ $m->xlog("L_INFO", "foo");]]></screen>
</section>
<section id="ID-ad3f402b1c78426a3a1de4d0c1d9ad6c"><title>get(name)</title>
<para>
get an Kamailio AVP:
get a Kamailio AVP:
</para>
<screen><![CDATA[my $numavp = Kamailio::AVP::get(5);
my $stravp = Kamailio::AVP::get("foo");]]></screen>

@ -499,7 +499,7 @@ PROTOTYPES: ENABLE
=head1 Kamailio::Message
This package provides access functions for an Kamailio C<sip_msg> structure and
This package provides access functions for a Kamailio C<sip_msg> structure and
its sub-components. Through its means it is possible to fully configure
alternative routing decisions.
@ -1231,7 +1231,7 @@ append_branch(self, branch = NULL, qval = NULL)
=head2 getParsedRURI()
Returns the current destination URI as an Kamailio::URI object.
Returns the current destination URI as a Kamailio::URI object.
=cut
@ -1557,7 +1557,7 @@ MODULE = Kamailio PACKAGE = Kamailio::AVP
Add an AVP.
Add an Kamailio AVP to its environment. name and val may both be integers or
Add a Kamailio AVP to its environment. name and val may both be integers or
strings; this function will try to guess what is correct. Please note that
Kamailio::AVP::add("10", "10")
@ -1604,7 +1604,7 @@ add(p_name, p_val)
=head2 get(name)
get an Kamailio AVP:
get a Kamailio AVP:
my $numavp = Kamailio::AVP::get(5);
my $stravp = Kamailio::AVP::get("foo");

@ -572,7 +572,7 @@ static SQInteger array_top(HSQUIRRELVM v)
v->Push(_array(o)->Top());
return 1;
}
else return sq_throwerror(v,_SC("top() on a empty array"));
else return sq_throwerror(v,_SC("top() on an empty array"));
}
static SQInteger array_insert(HSQUIRRELVM v)
@ -1139,7 +1139,7 @@ static SQInteger thread_wakeup(HSQUIRRELVM v)
if(state != SQ_VMSTATE_SUSPENDED) {
switch(state) {
case SQ_VMSTATE_IDLE:
return sq_throwerror(v,_SC("cannot wakeup a idle thread"));
return sq_throwerror(v,_SC("cannot wakeup an idle thread"));
break;
case SQ_VMSTATE_RUNNING:
return sq_throwerror(v,_SC("cannot wakeup a running thread"));
@ -1175,7 +1175,7 @@ static SQInteger thread_wakeupthrow(HSQUIRRELVM v)
if(state != SQ_VMSTATE_SUSPENDED) {
switch(state) {
case SQ_VMSTATE_IDLE:
return sq_throwerror(v,_SC("cannot wakeup a idle thread"));
return sq_throwerror(v,_SC("cannot wakeup an idle thread"));
break;
case SQ_VMSTATE_RUNNING:
return sq_throwerror(v,_SC("cannot wakeup a running thread"));

@ -1264,7 +1264,7 @@ public:
SQInteger eqtarget = trg;
bool local = _fs->IsLocal(trg);
if(local) {
eqtarget = _fs->PushTarget(); //we need to allocate a extra reg
eqtarget = _fs->PushTarget(); //we need to allocate an extra reg
}
_fs->AddInstruction(_OP_EQ, eqtarget, trg, expr);
_fs->AddInstruction(_OP_JZ, eqtarget, 0);

@ -259,9 +259,12 @@ int async_sleep(sip_msg_t *msg, int seconds, cfg_action_t *act, str *cbname)
return 0;
}
static unsigned int _async_timer_exec_last_slot = -1;
void async_timer_exec(unsigned int ticks, void *param)
{
int slot;
unsigned int idx;
unsigned int slot;
async_item_t *ai;
sr_kemi_eng_t *keng = NULL;
str cbname = STR_NULL;
@ -270,8 +273,23 @@ void async_timer_exec(unsigned int ticks, void *param)
if(_async_list_head == NULL)
return;
slot = ticks % ASYNC_RING_SIZE;
idx = ticks % ASYNC_RING_SIZE;
if(idx == _async_timer_exec_last_slot) {
/* timer faster than 1sec */
return;
}
if(_async_timer_exec_last_slot < 0) {
_async_timer_exec_last_slot = idx;
}
slot = (_async_timer_exec_last_slot + 1) % ASYNC_RING_SIZE;
if(slot != idx) {
LM_DBG("need to catch up from slot %u to %u (slots: %u)\n", slot, idx,
ASYNC_RING_SIZE);
}
do {
while(1) {
lock_get(&_async_list_head->ring[slot].lock);
ai = _async_list_head->ring[slot].lstart;
@ -297,6 +315,13 @@ void async_timer_exec(unsigned int ticks, void *param)
}
shm_free(ai);
}
if(slot == idx) {
break;
}
slot = (slot + 1) % ASYNC_RING_SIZE;
} while(1);
_async_timer_exec_last_slot = idx;
}
void async_mstimer_exec(unsigned int ticks, void *param)

@ -728,9 +728,9 @@ if (has_credentials("myrealm")) {
parameter force_stateless_reply regarding sending of the reply.
Meaning of the parameters is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use.
Usually this is domain of the host the server is running on.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. Usually this is domain of the host the server is running on.
It must not be empty string “”. In case of REGISTER requests, the
To header field domain (e.g., variable $td) can be used (because
this header field represents the user being registered), for all
@ -820,9 +820,9 @@ if (!auth_check("$fd", "subscriber", "1")) {
a previous request
Meaning of the parameters is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use.
Usually this is domain of the host the server is running on.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. Usually this is domain of the host the server is running on.
It must not be empty string “”. In case of REGISTER requests To
header field domain (e.g., variable $td) can be used (because this
header field represents a user being registered), for all other

@ -72,7 +72,7 @@ if (has_credentials("myrealm")) {
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a opaque string that
<para><emphasis>realm</emphasis> - Realm is an opaque string that
the user agent should present to the user so he can decide what
username and password to use. Usually this is domain of the host
the server is running on.
@ -229,7 +229,7 @@ if (!auth_check("$fd", "subscriber", "1")) {
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a opaque string that
<para><emphasis>realm</emphasis> - Realm is an opaque string that
the user agent should present to the user so he can decide what
username and password to use. Usually this is domain of the host
the server is running on.

@ -345,14 +345,14 @@ modparam("auth_db", "force_generate_avps", 1)
header with the correct realm.
* -6 (nonce reused) - the nonce has already been used to authenticate
a previous request
* -8 (authuser mismatch) - depending on the method, th From/To/RURI
* -8 (authuser mismatch) - depending on the method, the From/To/RURI
user does not match the authentication user (see auth_check()
function).
Meaning of the parameters is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use.
Usually this is domain of the host the server is running on.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. Usually this is domain of the host the server is running on.
It must not be empty string “”. In case of REGISTER requests To
header field domain (e.g., variable $td) can be used (because this
header field represents the user being registered), for all other
@ -392,9 +392,9 @@ if (!www_authorize("kamailio.org", "subscriber")) {
Negative return codes have the same meaning as for www_authenticate().
Meaning of the parameters is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use.
Usually this is domain of the host the server is running on.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. Usually this is domain of the host the server is running on.
It must not be empty string “”. Apart of a static string, typical
value is From header field domain (e.g., variable $fd).
If an empty string “” is used then the server will generate it from
@ -431,9 +431,9 @@ if (!proxy_authorize("$fd", "subscriber)) {
Negative return codes have the same meaning as for www_authenticate().
Meaning of the parameters is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use.
Usually this is domain of the host the server is running on.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. Usually this is domain of the host the server is running on.
It must not be empty string “”. Apart of a static string, typical
value is From header field domain (e.g., variable $fd).
The string may contain pseudo variables.
@ -471,7 +471,7 @@ if (!auth_check("$fd", "subscriber", "1")) {
authentication functions.
In addition, if the subscriber record is found, then the
load_credentials attributes are loaded. An use case can be loading the
load_credentials attributes are loaded. A use case can be loading the
credential attributes for callee.
Meaning of the parameters is as follows:

@ -365,14 +365,14 @@ modparam("auth_db", "force_generate_avps", 1)
used to authenticate a previous request
</para></listitem>
<listitem><para>
<emphasis>-8 (authuser mismatch)</emphasis> - depending on the method, th
<emphasis>-8 (authuser mismatch)</emphasis> - depending on the method, the
From/To/RURI user does not match the authentication user (see auth_check() function).
</para></listitem>
</itemizedlist>
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a opaque string that
<para><emphasis>realm</emphasis> - Realm is an opaque string that
the user agent should present to the user so he can decide what
username and password to use. Usually this is domain of the host
the server is running on.
@ -448,7 +448,7 @@ if (!www_authorize("kamailio.org", "subscriber")) {
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a opaque string that
<para><emphasis>realm</emphasis> - Realm is an opaque string that
the user agent should present to the user so he can decide what
username and password to use. Usually this is domain of the host
the server is running on.
@ -518,7 +518,7 @@ if (!proxy_authorize("$fd", "subscriber)) {
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a opaque string that
<para><emphasis>realm</emphasis> - Realm is an opaque string that
the user agent should present to the user so he can decide what
username and password to use. Usually this is domain of the host
the server is running on.
@ -586,7 +586,7 @@ if (!auth_check("$fd", "subscriber", "1")) {
</para>
<para>
In addition, if the subscriber record is found, then the load_credentials
attributes are loaded. An use case can be loading the credential attributes
attributes are loaded. A use case can be loading the credential attributes
for callee.
</para>
<para>Meaning of the parameters is as follows:</para>

@ -531,7 +531,7 @@ int diameter_authorize(struct hdr_field* hdr, str* p_method, sip_uri_t *uri,
AAAPrintMessage(req);
#endif
/* build a AAA message buffer */
/* build an AAA message buffer */
if(AAABuildMsgBuffer(req) != AAA_ERR_SUCCESS)
{
LM_ERR(" message buffer not created\n");

@ -49,7 +49,7 @@
( (_len_)+(((_len_)&3)?4-((_len_)&3):0) )
/* from a AAAMessage structure, a buffer to be send is build
/* from an AAAMessage structure, a buffer to be sent is build
*/
AAAReturnCode AAABuildMsgBuffer( AAAMessage *msg )
{

@ -233,7 +233,7 @@ int tcp_send_recv(int sockfd, char* buf, int len, rd_buf_t* rb,
// return AAA_ERROR;
}
*/
/* Data arriving on a already-connected socket. */
/* Data arriving on an already-connected socket. */
reset_read_buffer(rb);
switch( do_read(sockfd, rb) )
{

@ -275,7 +275,7 @@ int diameter_is_user_in(struct sip_msg* _m, char* _hf, char* _group)
AAAPrintMessage(req);
#endif
/* build a AAA message buffer */
/* build an AAA message buffer */
if(AAABuildMsgBuffer(req) != AAA_ERR_SUCCESS)
{
LM_ERR("message buffer not created\n");

@ -276,9 +276,9 @@ modparam("auth_radius", "append_realm_to_username", 0)
credentials and return whether they are valid or not.
Meaning of the parameter is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use. In
case of REGISTER requests it is usually hostpart of To URI.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. In case of REGISTER requests it is usually hostpart of To URI.
The string may contain pseudo variables.
* uri_user - Uri_user is an optional pseudo variable parameter whose
value, if present, will be given to Radius server as value of
@ -327,10 +327,10 @@ modparam("auth_radius", "append_realm_to_username", 0)
credentials and return whether they are valid or not.
Meaning of the parameters is as follows:
* realm - Realm is a opaque string that the user agent should present
to the user so he can decide what username and password to use. In
case of non-REGISTER requests it is usually hostpart of From or
P-Preferred-Identity URI.
* realm - Realm is an opaque string that the user agent should
present to the user so he can decide what username and password to
use. In case of non-REGISTER requests it is usually hostpart of
From or P-Preferred-Identity URI.
The string may contain pseudo variables.
* uri_user - Uri_user is an optional pseudo variable parameter whose
value, if present, will be given to Radius server as value of

@ -288,7 +288,7 @@ modparam("auth_radius", "append_realm_to_username", 0)
<para>Meaning of the parameter is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a
<para><emphasis>realm</emphasis> - Realm is an
opaque string that
the user agent should present to the user so he
can decide what
@ -366,7 +366,7 @@ modparam("auth_radius", "append_realm_to_username", 0)
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para><emphasis>realm</emphasis> - Realm is a opaque string that
<para><emphasis>realm</emphasis> - Realm is an opaque string that
the user agent should present to the user so he can decide what
username and password to use. In case of
non-REGISTER requests it is usually hostpart of From or

@ -150,7 +150,7 @@
argument <symbol>attribute</symbol>.
</para>
<para>
If the destination URI is set, the request will be send to the
If the destination URI is set, the request will be sent to the
address determined from that URI instead of the Request-URI. It
will carried over into branches together with the Request-URI when a
call to <serdoc:func>append_branch</serdoc:func> is made.
@ -379,7 +379,7 @@
</para>
<para>
Like <serdoc:func>set_sattr</serdoc:func>, it is identical to
assinging an string using the assignment operator and is
assinging a string using the assignment operator and is
deprecated.
</para>
</refsect2>
@ -421,7 +421,7 @@
attribute does not yet exist, it is created.
</para>
<para>
This function is identical to assinging an string using the
This function is identical to assinging a string using the
assignment operator and
is only kept to retain compatibility with earlier versions of SER.
It therefore is deprecated and may be removed in the future.

@ -84,7 +84,7 @@ Chapter 1. Admin Guide
1. Overview
This module provides a way to identify calls using a increasing
This module provides a way to identify calls using an increasing
sequence of integers.
It starts assigning an integer to a call. Next call gets next free

@ -16,7 +16,7 @@
<section>
<title>Overview</title>
<para>
This module provides a way to identify calls using a increasing sequence
This module provides a way to identify calls using an increasing sequence
of integers.
</para>
<para>

@ -219,7 +219,7 @@ Chapter 1. Admin Guide
The module provides routing, balancing and blocklisting capabilities.
It reads routing entries from a database source or from a config file
at Kamailio startup. It can uses one routing tree (for one carrier), or
at Kamailio startup. It can use one routing tree (for one carrier), or
if needed for every user a different routing tree (unique for each
carrier) for number prefix based routing. It supports several route
tree domains, e.g. for fallback routes or different routing rules for
@ -243,7 +243,7 @@ Chapter 1. Admin Guide
Routing tables can be reloaded and edited (in config file mode) with
the RPC interface, the config file is updated according the changes.
This is not implemented for the db interface, because its easier to do
the changes directly on the db. But the reload and dump functions works
the changes directly on the db. But the reload and dump functions work
of course here too.
Some module functionality is not fully available in the config file
@ -262,7 +262,7 @@ Chapter 1. Admin Guide
data structures. So from a performance point of view it is better to
pass only IDs in AVPs to the routing functions.
Basically this module could be used as an replacement for the lcr and
Basically this module could be used as a replacement for the lcr and
the dispatcher module, if you have certain flexibility, integration
and/or performance requirements that can't be satisfied with these
modules. But for smaller installations it probably make more sense to
@ -824,15 +824,14 @@ failure_route[1] {
Example 1.16. Configuration example - module configuration
The following config file specifies within the default carrier two
domains, each with an prefix that contains two hosts. It is not
possible to specify another carrier if you use the config file as data
source.
domains, each with a prefix that contains two hosts. It is not possible
to specify another carrier if you use the config file as data source.
All traffic will be equally distributed between the hosts, both are
active. The hash algorithm will working over the [1,2] set, messages
hashed to one will go to the first host, the other to the second one.
Don't use a hash index value of zero. If you omit the hash completely,
the module gives them a autogenerated value, starting from one.
the module gives them an autogenerated value, starting from one.
Use the “NULL” prefix to specify an empty prefix in the config file.
Please note that the prefix is matched against the request URI (or to
@ -929,7 +928,7 @@ domain register {
and a default route for other prefixes over carrier 2 and carrier 1.
The gateways for the default carrier will be used for functions that
don't support the user specific carrier lookup. The routing rules for
carrier 1 and carrier 2 for the “49” prefix contains a additional rule
carrier 1 and carrier 2 for the “49” prefix contains an additional rule
with the domain 2, that can be used for example as fallback if the
gateways in domain 1 are not reachable. Two more fallback rules (domain
3 and 4) for carrier 1 are also supplied to support the functionality

@ -29,7 +29,7 @@
* \defgroup carrierroute CARRIERROUTE :: The Kamailio carrierroute Module
* The module provides routing, balancing and blocklisting capabilities.
* It reads routing entries from a database source or from a config file
* at Kamailio startup. It can uses one routing tree (for one carrier),
* at Kamailio startup. It can use one routing tree (for one carrier),
* or if needed for every user a different routing tree (unique for each carrier)
* for number prefix based routing. It supports several routing domains, e.g.
* for failback routes or different routing rules for VoIP and PSTN targets.

@ -126,7 +126,7 @@ static int carrier_fixup(void ** param) {
}
if (((gparam_p)(*param))->type == GPARAM_TYPE_STR) {
/* This is a name string, convert to a int */
/* This is a name string, convert to an int */
((gparam_p)(*param))->type=GPARAM_TYPE_INT;
/* get carrier id */
if ((id = carrier_name_2_id(&((gparam_p)(*param))->v.str)) < 0) {
@ -157,7 +157,7 @@ static int domain_fixup(void ** param) {
}
if (((gparam_p)(*param))->type == GPARAM_TYPE_STR) {
/* This is a name string, convert to a int */
/* This is a name string, convert to an int */
((gparam_p)(*param))->type=GPARAM_TYPE_INT;
/* get domain id */
if ((id = domain_name_2_id(&(((gparam_p)(*param))->v.str))) < 0) {

@ -46,7 +46,7 @@
* @param backup indicates if the route is backed up by another. only
useful if status==0, if set, it is the hash value
of another rule
* @param backed_up an NULL-termintated array of hash indices of the route
* @param backed_up a NULL-termintated array of hash indices of the route
for which this route is backup
* @param comment a comment for the route rule
*

@ -111,7 +111,7 @@ struct failure_route_rule {
* @param backup indicates if the route is backed up by another. only
useful if status==0, if set, it is the hash value
of another rule
* @param backed_up an NULL-termintated array of hash indices of the route
* @param backed_up a NULL-termintated array of hash indices of the route
for which this route is backup
* @param comment a comment for the route rule
*

@ -17,7 +17,7 @@
<para>
The module provides routing, balancing and blocklisting capabilities.
It reads routing entries from a database source or from a config file at &kamailio;
startup. It can uses one routing tree (for one carrier), or if needed for every user
startup. It can use one routing tree (for one carrier), or if needed for every user
a different routing tree (unique for each carrier) for number prefix based routing.
It supports several route tree domains, e.g. for fallback routes or different routing
rules for VoIP and PSTN targets.
@ -41,7 +41,7 @@
Routing tables can be reloaded and edited (in config file mode) with the RPC
interface, the config file is updated according the changes. This is not
implemented for the db interface, because its easier to do the changes
directly on the db. But the reload and dump functions works of course here
directly on the db. But the reload and dump functions work of course here
too.
</para>
<para>
@ -61,7 +61,7 @@
AVPs to the routing functions.
</para>
<para>
Basically this module could be used as an replacement for the lcr and the
Basically this module could be used as a replacement for the lcr and the
dispatcher module, if you have certain flexibility, integration and/or performance
requirements that can't be satisfied with these modules. But for smaller
installations it probably make more sense to use the lcr and dispatcher module.
@ -744,7 +744,7 @@ failure_route[1] {
<title>Configuration example - module configuration</title>
<para>
The following config file specifies within the default carrier two
domains, each with an prefix that contains two hosts. It is not possible
domains, each with a prefix that contains two hosts. It is not possible
to specify another carrier if you use the config file as data source.
</para>
<para>
@ -752,7 +752,7 @@ failure_route[1] {
active. The hash algorithm will working over the [1,2] set, messages
hashed to one will go to the first host, the other to the second one.
Don't use a hash index value of zero. If you omit the hash completely,
the module gives them a autogenerated value, starting from one.
the module gives them an autogenerated value, starting from one.
</para>
<para>
Use the <quote>NULL</quote> prefix to specify an empty prefix in the config file.
@ -860,7 +860,7 @@ domain register {
and a default route for other prefixes over carrier 2 and carrier 1. The
gateways for the default carrier will be used for functions that don't
support the user specific carrier lookup. The routing rules for carrier 1
and carrier 2 for the <quote>49</quote> prefix contains a additional rule
and carrier 2 for the <quote>49</quote> prefix contains an additional rule
with the domain 2, that can be used for example as fallback if the gateways
in domain 1 are not reachable. Two more fallback rules (domain 3 and 4) for
carrier 1 are also supplied to support the functionality of the carrierfailureroute

@ -799,7 +799,7 @@ is_statefull,AAASessionCallback_f *cb,void *generic_data)
1.18. AAADropAuthSession(AAASession *s)
Deallocates the memory taken by a Authorisation session
Deallocates the memory taken by an Authorisation session
Meaning of the parameters is as follows:
* AAASession *s - Session to drop and deallocate memory for
@ -814,7 +814,7 @@ is_statefull,AAASessionCallback_f *cb,void *generic_data)
1.20. AAATransaction* AAACreateTransaction(AAAApplicationId
app_id,AAACommandCode cmd_code)
Create a AAATransaction for the given request
Create an AAATransaction for the given request
Meaning of the parameters is as follows:
* AAAApplicationId app_id - ID of the request's application

@ -116,7 +116,7 @@ int AAAAddResponseHandler(AAAResponseHandler_f *f,void *param)
/* MESSAGE SENDING */
/**
* Send a AAAMessage asynchronously.
* Send an AAAMessage asynchronously.
* When the response is received, the callback_f(callback_param,...) is called.
* @param message - the request to be sent
* @param peer_id - FQDN of the peer to send
@ -166,7 +166,7 @@ error:
}
/**
* Send a AAAMessage asynchronously.
* Send an AAAMessage asynchronously.
* When the response is received, the callback_f(callback_param,...) is called.
* @param message - the request to be sent
* @param peer_id - FQDN of the peer to send
@ -213,7 +213,7 @@ error:
/**
* Generic callback used by AAASendRecvMessage() to block until a transactional response
* is received.
* The AAASendRecvMessage() is basically a AAASendMessage() that has a callback
* The AAASendRecvMessage() is basically an AAASendMessage() that has a callback
* (this function) that blocks until a transactional response or timeout is received and
* then it returns that.
*
@ -228,7 +228,7 @@ void sendrecv_cb(int is_timeout,void *param,AAAMessage *ans, long elapsed_msecs)
}
/**
* Send a AAAMessage synchronously.
* Send an AAAMessage synchronously.
* This blocks until a response is received or a transactional time-out happens.
* @param message - the request to be sent
* @param peer_id - FQDN of the peer to send
@ -299,7 +299,7 @@ out_of_memory:
}
/**
* Send a AAAMessage synchronously.
* Send an AAAMessage synchronously.
* This blocks until a response is received or a transactional time-out happens.
* @param message - the request to be sent
* @param peer_id - FQDN of the peer to send

@ -60,8 +60,8 @@ extern dp_config *config; /**< Configuration for this diameter peer */
/**
* This function encodes a AAAMessage to its network representation (encoder).
* From a AAAMessage structure, a buffer to be send is built.
* This function encodes an AAAMessage to its network representation (encoder).
* From an AAAMessage structure, a buffer to be sent is built.
* @param msg - the message to encode
* @returns 1 on success, -1 on error
* \note This function is taken from DISC http://developer.berlios.de/projects/disc/
@ -380,7 +380,7 @@ AAAMessage *AAACreateResponse(AAAMessage *request)
/**
* Frees a AVP List and all the members
* Frees an AVP List and all the members
* @param avpList - list to be freed
* @returns AAA_ERR_SUCCESS
*/

@ -365,7 +365,7 @@
<title><function moreinfo="none">AAADropAuthSession(AAASession
*s)</function></title>
<para>Deallocates the memory taken by a Authorisation session</para>
<para>Deallocates the memory taken by an Authorisation session</para>
<para>Meaning of the parameters is as follows:</para>
@ -398,7 +398,7 @@
AAACreateTransaction(AAAApplicationId app_id,AAACommandCode
cmd_code)</function></title>
<para>Create a AAATransaction for the given request</para>
<para>Create an AAATransaction for the given request</para>
<para>Meaning of the parameters is as follows:</para>

@ -623,7 +623,7 @@ AAASession* cdp_new_cc_acc_session(str id, int is_statefull)
}
/**
* Creates a Authorization Session for the Client.
* Creates an Authorization Session for the Client.
* It generates a new id and adds the session to the cdp list of sessions
* \note Returns with a lock on AAASession->hash. Unlock when done working with the result
* @returns the new AAASession or null on error
@ -645,7 +645,7 @@ AAASession* AAACreateClientAuthSession(int is_statefull,AAASessionCallback_f *cb
return s;
}
/**
* Creates a Authorization Session for the Server, from the application specific Session starting request
* Creates an Authorization Session for the Server, from the application specific Session starting request
* It generates a new id and adds the session to the cdp list of sessions
* \note Returns with a lock on AAASession->hash. Unlock when done working with the result
* @returns the new AAASession or null on error
@ -725,7 +725,7 @@ void AAATerminateAuthSession(AAASession *s)
}
/**
* Deallocates the memory taken by a Authorization Session
* Deallocates the memory taken by an Authorization Session
* \note Must be called with a lock on the s->hash - will unlock it, so don't use the session after this
*/
void AAADropAuthSession(AAASession *s)
@ -742,7 +742,7 @@ AAASession* AAACreateAccSession(void *generic_data)
}
/**
* Deallocates the memory taken by a Accounting Session
* Deallocates the memory taken by an Accounting Session
*/
void AAADropAccSession(AAASession *s)
{
@ -788,7 +788,7 @@ int AAAStartChargingCCAccSession(AAASession *s)
return 0;
}
/**
* Deallocates the memory taken by a Accounting Session (Credit Control - RFC 4006)
* Deallocates the memory taken by an Accounting Session (Credit Control - RFC 4006)
*/
void AAADropCCAccSession(AAASession *s)
{

@ -223,7 +223,7 @@ int cdp_trans_timer(time_t now, void* ptr)
/* TRANSACTIONS */
/**
* Create a AAATransaction for the given request.
* Create an AAATransaction for the given request.
* @param app_id - id of the request's application
* @param cmd_code - request's code
* @returns the AAATransaction*

@ -65,7 +65,7 @@ typedef struct {
int max; /**< size of the queue array */
task_t *queue; /**< array holding the tasks */
gen_sem_t *empty; /**< id of semaphore for signaling an empty queue */
gen_sem_t *full; /**< id of semaphore for signaling an full queue */
gen_sem_t *full; /**< id of semaphore for signaling a full queue */
} task_queue_t;
/** callback function to be called on message processing */

@ -199,7 +199,7 @@ Chapter 1. Admin Guide
“set_prob”, “reset_prob” and “get_prob”.
This module can be used for simple load-shedding, e.g. reply 5% of the
Invites with a 503 error and a adequate random Retry-After value.
Invites with a 503 error and an adequate random Retry-After value.
The module provides as well functions to delay the execution of the
server. The functions “sleep” and “usleep” could be used to let the

@ -41,7 +41,7 @@
</para>
<para>
This module can be used for simple load-shedding, e.g. reply 5% of
the Invites with a 503 error and a adequate random Retry-After value.
the Invites with a 503 error and an adequate random Retry-After value.
</para>
<para>
The module provides as well functions to delay the execution of the

@ -101,59 +101,59 @@ static cmd_export_t cmds[]={
{"append_branch", (cmd_function)w_append_branch, 0, 0,
0, REQUEST_ROUTE | FAILURE_ROUTE },
{"append_branch", (cmd_function)w_append_branch, 1, fixup_spve_null,
0, REQUEST_ROUTE | FAILURE_ROUTE },
fixup_free_spve_null, REQUEST_ROUTE | FAILURE_ROUTE },
{"append_branch", (cmd_function)w_append_branch, 2, fixup_spve_spve,
0, REQUEST_ROUTE | FAILURE_ROUTE },
fixup_free_spve_spve, REQUEST_ROUTE | FAILURE_ROUTE },
{"send_udp", (cmd_function)w_send_udp, 0, 0,
0, REQUEST_ROUTE | FAILURE_ROUTE },
{"send_udp", (cmd_function)w_send_udp, 1, fixup_spve_null,
0, REQUEST_ROUTE | FAILURE_ROUTE },
fixup_free_spve_null, REQUEST_ROUTE | FAILURE_ROUTE },
{"send_tcp", (cmd_function)w_send_tcp, 0, 0,
0, REQUEST_ROUTE | FAILURE_ROUTE },
{"send_tcp", (cmd_function)w_send_tcp, 1, fixup_spve_null,
0, REQUEST_ROUTE | FAILURE_ROUTE },
fixup_free_spve_null, REQUEST_ROUTE | FAILURE_ROUTE },
{"send_data", (cmd_function)w_send_data, 2, fixup_spve_spve,
0, ANY_ROUTE },
fixup_free_spve_spve, ANY_ROUTE },
{"sendx", (cmd_function)w_sendx, 3, fixup_spve_all,
0, ANY_ROUTE },
fixup_free_spve_all, ANY_ROUTE },
{"is_incoming", (cmd_function)nio_check_incoming, 0, 0,
0, ANY_ROUTE },
{"msg_iflag_set", (cmd_function)w_msg_iflag_set, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"msg_iflag_reset", (cmd_function)w_msg_iflag_reset, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"msg_iflag_is_set", (cmd_function)w_msg_iflag_is_set, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"file_read", (cmd_function)w_file_read, 2, fixup_file_op,
0, ANY_ROUTE },
{"file_write", (cmd_function)w_file_write, 2, fixup_spve_spve,
0, ANY_ROUTE },
fixup_free_spve_spve, ANY_ROUTE },
{"setxflag", (cmd_function)w_setxflag, 1, fixup_igp_null,
0, ANY_ROUTE },
fixup_free_igp_null, ANY_ROUTE },
{"resetxflag", (cmd_function)w_resetxflag, 1, fixup_igp_null,
0, ANY_ROUTE },
fixup_free_igp_null, ANY_ROUTE },
{"isxflagset", (cmd_function)w_isxflagset, 1, fixup_igp_null,
0, ANY_ROUTE },
fixup_free_igp_null, ANY_ROUTE },
{"set_send_socket", (cmd_function)w_set_send_socket, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"set_send_socket_name", (cmd_function)w_set_send_socket_name, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"set_recv_socket", (cmd_function)w_set_recv_socket, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"set_recv_socket_name", (cmd_function)w_set_recv_socket_name, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"set_source_address", (cmd_function)w_set_source_address, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{"via_add_srvid", (cmd_function)w_via_add_srvid, 1, fixup_igp_null,
0, ANY_ROUTE },
fixup_free_igp_null, ANY_ROUTE },
{"via_add_xavp_params", (cmd_function)w_via_add_xavp_params, 1, fixup_igp_null,
0, ANY_ROUTE },
fixup_free_igp_null, ANY_ROUTE },
{"via_use_xavp_fields", (cmd_function)w_via_use_xavp_fields, 1, fixup_igp_null,
0, ANY_ROUTE },
fixup_free_igp_null, ANY_ROUTE },
{"is_faked_msg", (cmd_function)w_is_faked_msg, 0, 0,
0, ANY_ROUTE },
{"is_socket_name", (cmd_function)w_is_socket_name, 1, fixup_spve_null,
0, ANY_ROUTE },
fixup_free_spve_null, ANY_ROUTE },
{0, 0, 0, 0, 0, 0}
};

@ -924,7 +924,7 @@ stop_script:
resume_script:
return 1;
error:
/* send a error reply back */
/* send an error reply back */
cpl_fct.slb.freply( msg, cpl_err->err_code, &cpl_err->err_msg);
/* I don't want to return to script execution, so I return 0 to do break */
return 0;

@ -143,7 +143,7 @@ Chapter 1. Admin Guide
The salt is a binary array that is appended to the encryption password
for better protection against dictionary attacks. Same salt and
password need to be when encrypting and decrypting.
password need to be used when encrypting and decrypting.
Default value is "..." (see code).
@ -184,8 +184,8 @@ modparam("crypto", "register_evcb", 1)
3.4. kevcb_netio (str)
Name of the KEMI callbac functio for netio events. It receives a string
parameter with event route name.
Name of the KEMI callback function for netio events. It receives a
string parameter with event route name.
Default value is not set.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save