I set cfg like this:
tls_port_no=9004
listen=bond0:9002
but result is:
udp: 10.232.98.23 [10.232.98.23]:9002
tcp: 10.232.98.23 [10.232.98.23]:9002
tls: 10.232.98.23 [10.232.98.23]:9003
Hello,
I was wondering whether Kamailio (as proxy) can generate a PRACK on its own
( since one of the custom written dialer is not sending PRACK) ?
Is there any way I can achieve this ?
--
Warm Regds.
MathuRahul
Hi,
When my proxy receives a REGISTER request, it crashes while saving the user
location in MongoDB.
This is the backtrace from the core dump:
#0 0x0000003f08e32625 in raise () from /lib64/libc.so.6
#1 0x0000003f08e33e05 in abort () from /lib64/libc.so.6
#2 0x00000000006196f9 in fm_free (qm=0x7f4368bf7010, p=0x210add0,
file=0x7f4367fd7608 "<core>: db_res.c", func=0x7f4367fd8100
"db_free_columns", line=86) at mem/f_malloc.c:588
#3 0x00007f4367fc37ab in db_free_columns (_r=0x7f4368ca0430) at db_res.c:86
#4 0x00007f4367fc479e in db_free_result (_r=0x7f4368ca0430) at db_res.c:134
#5 0x00007f4367da37cb in db_mongodb_free_result (_h=0x7f4368c94718,
_r=0x7f4368ca0430) at mongodb_dbase.c:646
#6 0x00007f4367da5d65 in db_mongodb_query (_h=0x7f4368c94718,
_k=0x7fffa03d5550, _op=0x0, _v=0x7fffa03d5510, _c=0x7fffa03d5560, _n=1,
_nc=16, _o=0x7f4365ed2c80, _r=0x7fffa03d5508) at mongodb_dbase.c:783
#7 0x00007f4365cac7d2 in db_load_urecord (_c=0x7f4368c94718,
_d=0x7f436154a0e8, _aor=0x7fffa03d59d0) at udomain.c:601
#8 0x00007f4365cb1e8e in get_urecord (_d=0x7f436154a0e8,
_aor=0x7fffa03d59d0, _r=0x7fffa03d5760) at udomain.c:1106
#9 0x00007f4365a75dea in add_contacts (_m=0x7f4368cbdc40,
_d=0x7f436154a0e8, _a=0x7fffa03d59d0, _mode=1, _use_regid=1) at save.c:832
#10 0x00007f4365a77d32 in save (_m=0x7f4368cbdc40, _d=0x7f436154a0e8,
_cflags=4, _uri=0x0) at save.c:986
#11 0x00007f4365a606db in w_save2 (_m=0x7f4368cbdc40, _d=0x7f436154a0e8
"H\240TaC\177", _cflags=0x4 <Address 0x4 out of bounds>) at reg_mod.c:447
#12 0x000000000041d489 in do_action (h=0x7fffa03d6180, a=0x7f4368c71e98,
msg=0x7f4368cbdc40) at action.c:1100
#13 0x0000000000429a7a in run_actions (h=0x7fffa03d6180, a=0x7f4368c71e98,
msg=0x7f4368cbdc40) at action.c:1583
#14 0x000000000042a0df in run_actions_safe (h=0x7fffa03d7470,
a=0x7f4368c71e98, msg=0x7f4368cbdc40) at action.c:1648
#15 0x0000000000540b7c in rval_get_int (h=0x7fffa03d7470,
msg=0x7f4368cbdc40, i=0x7fffa03d6658, rv=0x7f4368c72830, cache=0x0) at
rvalue.c:924
#16 0x0000000000544db4 in rval_expr_eval_int (h=0x7fffa03d7470,
msg=0x7f4368cbdc40, res=0x7fffa03d6658, rve=0x7f4368c72828) at rvalue.c:1918
#17 0x00000000005451aa in rval_expr_eval_int (h=0x7fffa03d7470,
msg=0x7f4368cbdc40, res=0x7fffa03d6ae0, rve=0x7f4368c72070) at rvalue.c:1926
#18 0x000000000041ce4e in do_action (h=0x7fffa03d7470, a=0x7f4368c73148,
msg=0x7f4368cbdc40) at action.c:1064
#19 0x0000000000429a7a in run_actions (h=0x7fffa03d7470, a=0x7f4368c71cc0,
msg=0x7f4368cbdc40) at action.c:1583
#20 0x0000000000419dea in do_action (h=0x7fffa03d7470, a=0x7f4368c3bdb8,
msg=0x7f4368cbdc40) at action.c:712
#21 0x0000000000429a7a in run_actions (h=0x7fffa03d7470, a=0x7f4368c33898,
msg=0x7f4368cbdc40) at action.c:1583
#22 0x000000000042a1a7 in run_top_route (a=0x7f4368c33898,
msg=0x7f4368cbdc40, c=0x0) at action.c:1669
#23 0x000000000050747e in receive_msg (
buf=0xa6f780 "REGISTER sip:XXXXXXXXXXXX:5060;transport=tcp
SIP/2.0\r\nVia: SIP/2.0/UDP
XXXXXXXXX;branch=z9hG4bK242c.26de52a75c8675f6757e0958454a0ad5.0;i=1\r\nv:
SIP/2.0/TCP XXXXXXXXXX:62051;received=XXXXXXXX"...,
len=1004, rcv_info=0x7fffa03d7760) at receive.c:216
#24 0x0000000000606e76 in udp_rcv_loop () at udp_server.c:521
#25 0x00000000004a5c97 in main_loop () at main.c:1629
#26 0x00000000004aaf2a in main (argc=13, argv=0x7fffa03d7b78) at main.c:2561
I tested multiple times, it occurs everytime.
Let me know if you need more information.
Thanks,
Mickael
Hi,
In this serial forking-based failover scenario
UAC --> Proxy --> UAS 1
UAS 2
...
UAS 3
I've got a requirement to terminate the call and return an error to the
UAC if there is no final response within 60 seconds.
The usual fr_inv_timer / restart_fr_on_each_reply combination won't do,
because even when restart_fr_on_each_reply == 0, the timer is still
restarted on provisional replies of increasing response code value (e.g.
183 after 180). As the documentation states, fr_inv_timer is a
branch-level construct anyway, so this approach doesn't make sense here.
That's why I looked into max_inv_lifetime. However, when I set it to
60000, I still get the same result, but only when there are new branches
being formed on the proxy -> UAS side. It works fine if there is no
forking and a single gateway does not provide a final reply within 60
seconds. So, my sense is that the max_inv_lifetime timeout is reset when
a new branch is created to UAS 2...UAS N.
Is this accurate?
Thanks,
--
Alex Balashov - Principal
Evariste Systems LLC
235 E Ponce de Leon Ave
Suite 106
Decatur, GA 30030
United States
Tel: +1-678-954-0670
Web: http://www.evaristesys.com/, http://www.alexbalashov.com/
Hi all,
I'm having some issues treating requests within dialogs with gruu enabled
with kamailio 4.1.2.
I've got the "standard" configuration of WITHIN route with the adition of
the next lines:
if(is_gruu()){
route(LOCATION);
};
before the the RELAY route call in the loose_route section.
The "problem" is that the ACK with a pub-gruu on the Req-URI is not
properly lookup. In the logs I can see the following statements:
2(4232) DEBUG: registrar [lookup.c:123]: lookup(): looking up pub gruu
[urn:uuid:d63b1c4f-d7dc-4f4e-87f1-948123266dc0]
2(4232) DEBUG: registrar [lookup.c:158]: lookup(): 'sam(a)A.B.C.D' Not found
in usrloc
Where A.B.C.D is the local IP of the UA.
Looking at the code, this last line looks like is looking for the
"standard" URI (username@domain) instead of using the pub gruu. Am I right
with this assumption or am I missing something from the code?
As far as I could look, it looks like there's an exit -1 statement in the
line 158 of lookup.c which disables the following gruu treatment.
Since the username with IP is not registered, this ACK is lost and the
sesion is not stablished (lost ACK).
Can anyone provide some hints why is this failing?
Thanks a lot in advance!
Samuel.
Hi
I am having an issue with the Async module.
The async_route function doesn't seem able to take a dynamic value as is
it's duration.
The module docs states: The sleep parameter represent the number of
seconds to suspend the processing of a SIP request. Maximum value is 100.
The parameter can be a static integer or a variable holding an integer.
Docs here:
http://kamailio.org/docs/modules/4.2.x/modules/async.html#async.f.async_rou…
However when I try:
async_route("WITHINDLG_DELAYED", $avp(buffer_duration) );
I get the following error when trying to restart kamailio:
parse error in config file /etc/kamailio/switchsoftk
amailio/includes/deployments/develop/callprocessing/../../../default.cfg,
line 866, column 41-61: function async_route: parameter 2 is not constant
... failed!
I also tried with $var instead of an AVP, and even tried having perl call
the function (since we have gotten around this sort of limitation in the
past using perl).
Perl gives:
Jan 24 03:27:07 develop-callprocessing /usr/sbin/kamailio[1424]: ERROR:
app_perl [kamailioxs.xs:289]: moduleFunc(): Module function 'async_route'
is unsafe. Call is refused.
Jan 24 03:27:07 develop-callprocessing /usr/sbin/kamailio[1424]: ERROR:
app_perl [kamailioxs.xs:986]: XS_Kamailio__Message_moduleFunction():
calling module function 'async_route' failed. Missing loadmodule?
I have gotten around this issue with a large if else structure like the
following:
if ($avp(buffer_duration) == 1) {
async_route("WITHINDLG_DELAYED", 1);
} else if ($avp(buffer_duration) == 2) {
async_route("WITHINDLG_DELAYED", 2);
.........
This is messy but works for us.
The bug is not blocking our progress due to this work around but I wanted
to post it any way incase it helps improve the module.
All the best.
Will Ferrer
Switchsoft
Hi,
Is there a way to write CDRs for failed calls?
I tried calling the acc_db_request command from my script, but it inserts a
transaction log not a CDR.
Thanks,
Mickael