I will try this, thanks a lot for your help.
regards.
On Wed, Jun 15, 2022 at 5:43 PM Alex Balashov <abalashov(a)evaristesys.com>
wrote:
> Setting t_on_failure("FAILURE_ROUTE") before t_relay(), given a route
> block failure_route[FAILURE_ROUTE], as you are doing, should work.
>
> --
> Alex Balashov | Principal | Evariste Systems LLC
>
> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
> Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
>
>
> --
> Alex Balashov | Principal | Evariste Systems LLC
>
> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
> Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
>
>
> On Wed, Jun 15, 2022 at 8:34 AM Antonio Couto <couto.a(a)gmail.com> wrote:
>
>> Thanks for your support, I am trying to do this but to be honest I don't
>> know
>> how to arm the failure route for this case of "fr_inv_timer".
>>
>> When I received reply 183 I use t_set_fr() function to set the new value
>> for "fr_inv_timer",
>> do far so good, but I never received failure_route[0] when Kamailio
>> terminate the call sending 408,
>> even calling like this:
>>
>> t_on_failure("0");
>> t_relay();
>>
>> I can't find on documentation how to do this.
>> Thanks a lot
>>
>>
>>
>>
Someone know how to terminate a call on TM module from a external
application, http, websocket, udp or using other modules when the call on
183 state? I am making a answering machine detection analising audio from
RTPEngine recording daemon , but i need to disconnect the call before is
anwered byt remote side.
Kamailio INVITE >> Destination
<< 100 trying
<< 183 session progress
I need to comand Kamailio to drop this call from a external application in
this point.
I searched on each module but I can not find any solution.
Thanks in advance
Thanks for your support, I am trying to do this but to be honest I don't
know
how to arm the failure route for this case of "fr_inv_timer".
When I received reply 183 I use t_set_fr() function to set the new value
for "fr_inv_timer",
do far so good, but I never received failure_route[0] when Kamailio
terminate the call sending 408,
even calling like this:
t_on_failure("0");
t_relay();
I can't find on documentation how to do this.
Thanks a lot
There some way to set a callback route for TM´s "fr_inv_timer" ?
I want to receive this callback when its fires and before Kamailio send 408
Request Timeout to the caller ?
I tryed every callback available but I think I missing something or I will
need to implement on TM module.
Thanks in advance
Hi,
I think I have not yet understood how jsonrpc needs to be configured. In
kamcli I can issue the cmd "ul show" and I get a valid reply. When I
print "domain list" I get
error:
 code: 500
 message: Method Not Found
id: 6897
jsonrpc: '2.0'
The same applies to JSONRPC Commands with Siremis. Some commands work,
others are not found.
Do I need some special configuration?
Hi,
we have some Kamailio instances running (currently latest 5.4 release), and we need to restart it from time to time. We have a grafana graph showing the pkg memory usage of one random tcp listener, and it increases slowly over time. Config is pure python KEMI.
A mem dump directly after restarting Kamailio says this:
SipSeppBook22:tmp sdamm$ grep alloc pkgmem_before.log | awk '{ print substr( $0, 16, length($0) ) }' | sort | uniq -c | sort -k1n | tail -10
16 sipproxy qm_status(): alloc'd from core: core/re.c: subst_parser(301)
31 sipproxy qm_status(): alloc'd from core: core/sr_module.c: load_module(436)
31 sipproxy qm_status(): alloc'd from core: core/sr_module.c: register_module(236)
31 sipproxy qm_status(): alloc'd from core: core/sr_module.c: register_module(253)
40 sipproxy qm_status(): alloc'd from core: core/pvapi.c: pv_init_buffer(2139)
58 sipproxy qm_status(): alloc'd from core: core/cfg.lex: pp_define(1827)
133 sipproxy qm_status(): alloc'd from core: core/rpc_lookup.c: rpc_hash_add(101)
162 sipproxy qm_status(): alloc'd from core: core/counters.c: cnt_hash_add(339)
211 sipproxy qm_status(): alloc'd from core: core/cfg.lex: addstr(1448)
265 sipproxy qm_status(): alloc'd from core: core/pvapi.c: pv_table_add(236)
And after running for some weeks, the same dump looks like this:
SipSeppBook22:tmp sdamm$ grep alloc prod_pkgmem.log | awk '{ print substr( $0, 16, length($0) ) }' | sort | uniq -c | sort -k1n | tail -10
31 ifens5 qm_status(): alloc'd from core: core/sr_module.c: register_module(253)
40 ifens5 qm_status(): alloc'd from core: core/pvapi.c: pv_init_buffer(2139)
59 ifens5 qm_status(): alloc'd from core: core/cfg.lex: pp_define(1827)
133 ifens5 qm_status(): alloc'd from core: core/rpc_lookup.c: rpc_hash_add(101)
161 ifens5 qm_status(): alloc'd from core: core/counters.c: cnt_hash_add(339)
203 ifens5 qm_status(): alloc'd from core: core/cfg.lex: addstr(1448)
265 ifens5 qm_status(): alloc'd from core: core/pvapi.c: pv_table_add(236)
686 ifens5 qm_status(): alloc'd from core: core/pvapi.c: pv_parse_format(1173)
694 ifens5 qm_status(): alloc'd from htable: ht_var.c: pv_parse_ht_name(158)
707 ifens5 qm_status(): alloc'd from core: core/pvapi.c: pv_cache_add(349)
I know, currently there are a few lines in the code which look like this:
self.instance_name = KSR.pv.get("$sht(pbxdata=>ip.%s)" % (ip,))
This has been an issue in the past and I have replaced the code with something like this:
KSR.pv.sets("$var(tmpInstanceIp)", ip)
self.instance_name = KSR.pv.get("$sht(pbxdata=>ip.$var(tmpInstanceIp))")
However, even after changing this, the memory still grows slowly but steadily.
The usage scenario is TLS-only on one side (clients) and TCP-only on the other side (pbxes).
Does anybody have a hint for me how to debug this? Looks like there's a lot of pv stuff in the memory, but I don't really know where.
Thanks for any hints,
Sebastian
I need to hang up a call after some seconds after received 183 provisional
response but before any other SIP message.
I am using "rtimer" module to set a callback on time, but how can I search
for a call on transaction module in order to terminate the call?
I think I am missing something to prepare the transaction data before I can
use this data to terminate the call.
I am thinking of storing the call-Id of all transactions to use on timeout
callback, I don't know if it's possible.
Thanks in advance.
Antonio
Hello all
we are using the phonenum_match_cn function to detect valid phone numbers,
but seems there are some numbers like 576015145834 which are no detected as
valid ones,
$phn(ani=>valid) --> 0
$phn(ani=>ccname) --> <null>
$phn(ani=>cctel) --> 0
$phn(ani=>error) --> Invalid number
but using
https://libphonenumber.appspot.com/phonenumberparser?number=576015145834&co…
seems it gives a valid result
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Result from isValidNumberForRegion() true
Phone Number region CO
Result from getNumberType() FIXED_LINE
we are using kamailio 5.4 and libphonenumber tag v8.12.30 (also tested v8.9)
the command is used with 'ZZ' cnc and passing the number with +
maybe we are missing something in the configuration/setup?
thanks and regards
david
--
<http://www.sonoc.io/>
David EscartÃn
NOC engineer
*www.sonoc.io* <http://www.sonoc.io/>
[image: LinkedIn] <https://www.linkedin.com/company/sonoc>
[image: Twitter] <https://twitter.com/sonoc_>
[image: Facebook] <https://www.facebook.com/SONOCio/>
This e-mail is for the exclusive use of its recipients and may contain
business secrets or other confidential or privileged information. Any
unauthorised use, copying, publication or distribution of this e-mail is
strictly prohibited. If you are not the intended recipient, please inform
us immediately by replying to this e-mail and delete it, including any
attachments or copies on your system.
In accordance with the GDPR (EU) 2016/679 and the LOPDGDD 3/2018, we inform
you that this e-mail address and/or any other personal data you have
provided us with will be treated by SONOC with absolute confidentiality and
with the only purpose of providing you with the requested services, due to
your condition as a client, supplier or because you have requested
information from us at any time. These data will only be kept for as long
as required to comply with legal obligations. You can exercise your rights
at any time by sending an e-mail to: *dataprotection(a)sonoc.io*
<dataprotection(a)sonoc.io>*.* <dataprotection(a)sonoc.io>
Hi,
I'm running a cloud infrastructure with multiple sip domains and I have
some kamailio's as registrars with dmq for usrloc replication.
The kamailio registrars are configured without db, so the aors are in ram.
For some gui's I need to get all aors for one sip domain, If I execute
ul.dump I get all aors, but I want only a few. In my situation it would be
perfect to get all registrations for one sip domain in one request (memory,
performance, cache at gui...)
I thought I could save the registers with save("$rd") but ul.dump doesn't
allow any parameter that restricts the "location" domain.
Is there any solution for this?
Best regards
--
Jose Fco. Irles Durá
hello i have problem on receive source port rtp packet
client-ip = 5.202.105.250
server-ip = 194.5.205.33
client2-ip = 188.212.241.46
In the 200 ok packet from client2 ,The value 4002 is set in the audio port
[image: invite.jpg]
I expect rtp packets to be sent to me from source port 4002, but these
packets are sent to me from another source , which is port 55755 in the
image below, and I just opened this port(4002) in the firewall.
If I turn on my firewall service, all packets will be dropped. I have to
have this firewall
[image: rtp.jpg]
thanks for help me
Kamailio allows the use of an interface name (eth0 for example), as the identifier for the listen directive. Additionally it allows assignment of a name to be used as an identifier. This can be used, as indicated in the documentation:
A unique name can be set for sockets to simplify the selection of the socket for sending out. For example, the rr and path modules can use the socket name to advertise it in header URI parameter and use it as a shortcut to select the corresponding socket for routing subsequent requests.
I'm wondering if there is a way to get allow either of these parameters to be used to define DMQ's server_socket parameter. This would be useful in containerization situations where the local IP address is assigned dynamically. Here's what I'm attempting:
#!KAMAILIO
loadmodule "tm"
loadmodule "sl"
loadmodule "dmq"
loadmodule "textops"
listen=udp:eth0:5060 name "sip5060"
listen=udp:eth0:5090 name "sip5090"
modparam("dmq", "server_address", "sip:dmq_quicktest:5090")
modparam("dmq", "notification_address", "sip:dmq-bus:5090")
modparam("dmq", "server_socket", "sip5090" )
## Above line doesn't work, neither does the line below:
#modparam("dmq", "server_socket", "udp:eth0:5090" )
modparam("dmq", "multi_notify", 1)
modparam("dmq", "num_workers", 3)
modparam("dmq", "ping_interval", 30)
request_route {
exit;
}
I get the following error during startup:
0(1) ERROR: dmq [dmq.c:241]: mod_init(): server_uri is not a socket the proxy is listening on
Thoughts? I realize that I can configure and pass static networking with the containers, but I'm looking for a way to have this set on the fly - especially when testing, etc.
Ben Kaufman
Hello !
I have this issue with the telco provider they give the sip trunk on a
private conection with private ips, the problem is that i am trying to
relocate the sip trunk in remote server and I've tried though basic
networking/tunnels/vpn and no go; their sbc is dropping requests and
rejects if they are more via headers, they force me to use that conection
and the ip allocated.
The challenge is how to this is in kamailio, basically i just want to
transport the trunk (similiar to a reverse proxy for web) to its new
destination and from there handle everything.
Any hints on how to achieve this?
Dear List,
I’m looking at using Kamailio as SBC.
This would replace our current FreeSWITCH-based SBCs.
What are your thoughts on this move? Would there be any known reasons why Kamailio would be superior to FreeSWITCH as an SBC?
Thank you so much
Unai Rodriguez
Hello guys,
I have a failure route which calls another route, and on this route I need
to
t_drop_replies();
But i'm getting:
[core/cfg.y:3510]: yyerror_at(): parse error in config file
/etc/kamailio/include/relay_routes.cfg, line 143, column 20: Command cannot
be used in the block
Any way to fix this without me having to use it in the failure_route?
Regards,
David Villasmil
email: david.villasmil.work(a)gmail.com
phone: +34669448337
Hello,
I'd like to remove headers during async processing e.g. in a route called from http_async_client(..).
The usual textops functions are not working here.
Adding headers could be done using something like rtjson, but it do not offer a remove header function.
I could of course loop the request locally, but this is not that "nice".
Any other suggestions for this case? Or just the rtjson module needs some extensions?
Thank you,
Henning
--
Henning Westerholt - https://skalatan.de/blog/
Kamailio services - https://gilawa.com<https://gilawa.com/>
Hi,
I had some difficulties getting Siremis 5.3 to run under Debian 11
Bullseye. It turned out that the problem was the creation of the Siremis
socket:
<UnixSockLocal name="unixsocklocal"
address="/run/siremis/siremis_rpc.sock" timeout="3.0"/>
There is a warning in siremisJRCommands.xml that points out that systemd
has to be reconfigured as sockets in /tmp are no longer shared
(PrivateTmp setting). By the same token, /run/siremis/siremis_rpc.sock
cannot be created as the httpd server is not allowed to write to /run,
i.e. it can neither create the socket nor the siremis directory. The
permanent creation of the siremis directory with suitable access rights
is also not possible, since /run is mounted as tmpfs in the default
configuration.
At least the directory has to be created at boot time, which can be done
with a small helper service.
This is working for me (siremis-helper.service):
[Unit]
Description=Siremis Helper Service
After=network.target
[Service]
Type=oneshot
ExecStartPre=/usr/bin/mkdir /var/run/siremis
ExecStart=/usr/bin/chown www-data:www-data /var/run/siremis
[Install]
WantedBy=multi-user.target
It is enabled the usual way with systemctl "systemctl start --now
siremis-helper".
Siremis now works with jsonrpc commands and the procedure would mean
that installing Siremis on a newer Debian system would definitely
require some attention.
Does anyone have any objections to the above procedure?
Hello
General overview of the infrastructure:
Client (Cisco Hardware) ---> AWS NLB ---> Kamailio Instances
The client has a time limit for the opened TCP connections - 10 minutes.
This is a hardcoded value that can't not be changed. Regardless of the
traffic that flows through the connection, it is closed after 10 minutes.
Problem: in case of long-running calls above 10 minutes it is not possible
for Kamailio to send back SIP traffic back to the client using the original
TCP connection. The client has been asked to either increase the time limit
or send SIP reinvites - none of that is possible due to some client's
infrastructure limitations.
Question: is it possible to force Kamailio to open a new TCP connection and
associate it with the call? Client has a 5060 port always opened which can
accept incoming connections.
Hello
im trying to textops module to remove headers with name length less than 5 characters with regular expression but it seems impossible or the module does not handle $ char
remove_hf_re("^.{1,5}$")
Hi,
I seem to have a problem setting up Siremis 5.3 on a Debian 11 box using
the Kamailio 5.6.0 release (installed from repo).
When I enter something like core.uptime into the JSONRPC Command Panel,
I get a "System Internal Error" alert. The Apache error log then says:
[Mon Jun 06 10:48:41.459377 2022] [php7:notice] [pid 22322] [client
192.168.xxx.xxx:45030] socket bind failed: No such file or directory,
referer: http://deb11srv1-kamailio/siremis/sipadmin/jrcmds
The path siremis/sipadmin/jrcmds obviously does not seem to exist and I
assume that one needs some internal adjustments for some paths.
As far as the socket is concerned,
siremis/modules/sipadmin/service/siremisJRCommands.xml has the definition:
UnixSockRemote name="unixsockremote"
address="/var/run/kamailio/kamailio_rpc.sock" timeout="3.0"/>
and the corresponding definition in /etc/kamailio/kamailio.cfg is:
modparam("jsonrpcs", "dgram_socket", "/var/run/kamailio/kamailio_rpc.sock")
modparam("jsonrpcs", "dgram_mode", 0666)
which looks fine to me. I also checked for the existence of the socket
and its access rights.
Any suggestions?
Hallo all,
I defined branch_failure routing block via t_on_branch_failure()
In the branch_failure route, in case of "408 Request timeout" I am sending
CANCEL with reason "t_cancel_callid("$ci", "$cs", "22", "408")".
If the t_cancel_callid("$ci", "$cs", "22", "408") is called in
branch_failure for branch idx 0, the CANCEL is sent, but Reason header is
missing there.
Why? (I expect that t_cancel_callid() should insert Reason header
regardless of branch it is called from)
If the t_cancel_callid is called in branch idx !=0, the CANCEL contains
Reason header with cause as expected.
Thanks for clarification of this behavior,
Pavel.
P.S. code snipset:
event_route[tm:branch-failure:primary]
{
if ($T(reply_code) == "408")
{
if ($avp(branch_idx) == $T_branch_idx)
{
if (t_cancel_callid("$ci", "$cs", "22", "408"))
{
xlog("L_INFO", "CANCEL sent ci:$ci, cs:$cs 408");
}
else
{
xlog("L_INFO", "CANCEL not sent ... ci:$ci, cs:$cs 408");
}
$var(_palotmp_) = "sip:" + $avp(replaced_cfnry_target_number) +
"@" + $dd + ":" + $dp + ";user=phone";
append_branch($var(_palotmp_),"1.0");
t_relay();
return;
}
}
}
Hello.
Debian 10, Kamailio 5.2.1
I want to monitor concurrent calls in/out per every trunk connected to this
proxy (it's done with dialog profiles), and export this to Zabbix. But I
can't find in snmpstats documentation how to export user-defined variables.
Help me please. Maybe SNMP isn't the best solution for that...
Hello ist,
I've noticed some of the latest releases do not have their repo mentioned
in the https://rpm.kamailio.org/centos/kamailio.repo
The repos are there, it is just the kamailio.repo file missing some of the
newer versions like 5.4.7, 4.5.8, 5.5.4, 5.6.0...
Cheers,
Patrick
Hello,
im using DNS Failover and everything works well except i would like to try other resolved ips when i receive a 408 from the previous ones
As far as i know only a received 503 will trigger next destinations and there is no config parameters in tm module to handle that behaviour.
so how can i implement it ?
set a failure route before relay and just call t_relay() after again ?
also is there a way in failure route to know how many destinations are left to exit failure route.
Thanks for help.
Hello,
I am writing some Kamailio scripts using app_python3.
I understand that the KSR module is automatically generated by Kamailio. So when I
import KSR from KSR
I don't get any syntax from my IDE since it doesn't know where KSR is.
My question: is there a way to generate a KSR.py file that can be used for autocompletion and syntax highlighting?
Thanks.
Olivier
Hello is there a way or pseudo var to get ip address & port that the request will be sent to and save it in to another variable.
i want a way to get it to store it.
im not able to save it with to_ip and to_port of the onsend_route.
TThanks.
Sorry if this is a super basic ask but I can't seem to work it out, I have got a work around but for my own sanity wanted to post the question on here.
In Kamailio Native 5.5.2
I want to be able to look into this field $(di{uri.user}) and "find" or see if it "contains" a value
i.e Diversion: "TEST" sip:112233445566@xxx.xxx.xxx.xxx;user=phone;
find 234
or
contains 234
I know how to do this in in KEMI Python but for the life of me cant get my head around it in Native.
2ndly is there an opposite to {s.numeric} Removes all non-numeric parts of string.
I want the ability to strip all numeric parts.
Keep us the good work.
Lewis
Hello all!
My test Kamailio setup (now updated to version 5.5.4) that was working with
MS Teams some time ago, now stopped :)
I was wondering if someone could tell me if the current behavior is correct
or if there is a problem?
Here is a screenshot of the packet capture:
[image: image.png]
I thought that after MS Teams side sent Change Cipher Spec request,
Kamailio should respond with ACK. But instead it just starts sending data
(I believe it sends OPTIONS request. sipdump module captured it). Is this
correct?
There seems to be no issues in the Kamailio debug log:
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/io_wait.h:782]: io_watch_chg(): DBG: io_watch_chg (0xae9560, 24, 0x1,
0xffffffff) fd_no=20 called
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/io_wait.h:600]: io_watch_del(): DBG: io_watch_del (0xae9560, 25, -1,
0x0) fd_no=20 called
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/tcp_main.c:4471]: handle_tcpconn_ev(): sending to child, events 1
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/tcp_main.c:4144]: send2child(): selected tcp worker idx:1 proc:11
pid:28972 for activity on [tls:172.16.30.206:5062], 0x7fad6a70f6c8
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:1737]: handle_io(): received n=8 con=0x7fad6a70f6c8, fd=6
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_domain.c:1208]: tls_lookup_private_key(): Private key lookup for
SSL_CTX-0x7fad6a5e1eb8: (nil)
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_main.c:2720]: tcpconn_do_send(): sending...
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_main.c:2753]: tcpconn_do_send(): after real write: c=
0x7fad6a70f6c8 n=2279 fd=6
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_main.c:2754]: tcpconn_do_send(): buf=
May 20 15:29:05 server kamailio[28961]: 7
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/io_wait.h:375]: io_watch_add(): processing io_watch_add(0xb555c0, 6,
2, 0x7fad6a70f6c8) - fd_no=1
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_domain.c:1208]: tls_lookup_private_key(): Private key lookup for
SSL_CTX-0x7fad6a5e1eb8: (nil)
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_domain.c:790]: sr_ssl_ctx_info_callback(): SSL handshake done
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_domain.c:794]: sr_ssl_ctx_info_callback(): SSL disable renegotiation
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_server.c:542]: tls_connect(): TLS connect successful
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_server.c:549]: tls_connect(): tls_connect: new connection to
52.114.132.46:5061 using TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384 256
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_server.c:552]: tls_connect(): tls_connect: sending socket:
172.16.30.206:0
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_server.c:418]: tls_dump_cert_info(): tls_connect: server certificate
subject:/CN=sip.pstnhub.microsoft.com
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: tls
[tls_server.c:422]: tls_dump_cert_info(): tls_connect: server certificate
issuer:/C=US/O=Microsoft Corporation/CN=Microsoft RSA TLS CA 01
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_main.c:2720]: tcpconn_do_send(): sending...
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_main.c:2753]: tcpconn_do_send(): after real write: c=
0x7fad6a70f6c8 n=509 fd=6
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_main.c:2754]: tcpconn_do_send(): buf=
May 20 15:29:05 server kamailio[28961]: â–’4â–’â–’â–’â–’.â–’2T$-â–’â–’ oâ–’w)â–’(â–’â–’^â–’Dâ–’U{xn9â–’'
â–’&â–’tâ–’â–’)â–’â–’?â–’dâ–’=gâ–’â–’?â–’â–’â–’4/â–’â–’â–’â–’-R+â–’tRâ–’H,â–’oâ–’D2r
▒5Q?m▒▒9▒▒#▒O▒▒▒\eϣ▒݄"▒z=▒U▒?
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/io_wait.h:600]: io_watch_del(): DBG: io_watch_del (0xae9560, 24, -1,
0x0) fd_no=19 called
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/tcp_main.c:4471]: handle_tcpconn_ev(): sending to child, events 1
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/tcp_main.c:4144]: send2child(): selected tcp worker idx:2 proc:12
pid:28973 for activity on [tls:172.16.30.206:5062], 0x7fad6a6f25a0
May 20 15:29:05 server kamailio[28961]: 12(28973) DEBUG: <core>
[core/tcp_read.c:1737]: handle_io(): received n=8 con=0x7fad6a6f25a0, fd=6
May 20 15:29:05 server kamailio[28961]: 12(28973) DEBUG: tls
[tls_domain.c:1208]: tls_lookup_private_key(): Private key lookup for
SSL_CTX-0x7fad6a5e1eb8: (nil)
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:304]: tcp_read_data(): EOF on connection 0x7fad6a70f6c8
(state: 0, flags: 18) - FD 6, bytes 0, rd-flags 10000 ([52.114.132.46]:5061
-> [52.114.132.46]:0)11(28972) DEBUG: <coreTCP closed event creation
triggered (reason: 0)
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:192]: tcp_emit_closed_event(): no callback registering for
handling TCP closed event
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:1503]: tcp_read_req(): EOF
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/io_wait.h:600]: io_watch_del(): DBG: io_watch_del (0xb555c0, 6, -1,
0x10) fd_no=2 called
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:1878]: handle_io(): removing from list 0x7fad6a70f6c8 id 2
fd 6, state 2, flags 18, main fd 25, refcnt 2 ([52.114.132.46]:5061 ->
[52.114.132.46]:0)
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:1659]: release_tcpconn(): releasing con 0x7fad6a70f6c8,
state -1, fd=6, id=2 ([52.114.132.46]:5061 -> [52.114.132.46]:0)
May 20 15:29:05 server kamailio[28961]: 11(28972) DEBUG: <core>
[core/tcp_read.c:1660]: release_tcpconn(): extra_data 0x7fad6a70f008
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: <core>
[core/tcp_main.c:3574]: handle_tcp_child(): reader response= 7fad6a70f6c8,
-1 from 1
May 20 15:29:05 server kamailio[28961]: 14(28975) DEBUG: tls
[tls_server.c:729]: tls_h_tcpconn_close_f(): Closing SSL connection
0x7fad6a70f008
Thank you!
Hi, am looking for some specific Kamailio help i cant seem to find anywhere
(
#
running Kamailio on Debian/buster ...
##
after receipt of tcp FIN, port is closed.
when signaling is required again from Kamailio side.
Kam is attempting SYN on FINd (closed) port.
this is rejected RST.
How to change SYN to re-establish tcp on new ephemeral port?
##
another description, same problem:
FIN received from (external) cisco (call owner) due to port recycling, not
to keep port open after x minutes. everything is as expected re ACKs and
such.
When Kam wants to send REFER to cisco after the FIN, tcp attempts a SYN (as
we'd expect) but sends SYN on old closed port.
##
Where to change this Kam/OS/other is where i'm attempting to identify, then
figure how to change.
Thank you.
It seems that TOPOS is not working properly on RE-INVITE and stop masking IP and contact on some RE-INVITE.
When a RE-INVITE is send with Kamailio IP as Request-URI TOPOS is not operating.
Note : we are using the HTABLE trick to rewrite $ru and match the call but we would need to have TOPOS re-evaluating the dialog once done.
We use a standard configuration with 2 modifications.
1. in route[DISPATCH] to set the HTABLE
if(is_method("INVITE")) {
$sht(ct=>$ci::$ft) = $sel(contact.uri);
}
1. in route[WITHINDLG] to find the call if R-URI = myself
if(has_totag() && uri==myself) {
if($sht(ct=>$ci::$ft) != $null && $T_reply_code > 400) $shtex(ct=>$ci::$ft) = 10 ;
if($sht(ct=>$ci::$tt) != $null) {
$ru = $sht(ct=>$ci::$tt);
if (is_method("BYE")) $shtex(ct=>$ci::$tt) = 10 ;
route(RELAY);
}
}
As you can see in the PCAP the RE-INVITE goes directly to calling stating with the Contact not updated and the 200 OK is also sent to called party with wrong Contact info too.
[ https://github.com/kamailio/kamailio/files/8730489/topos-issue.zip ]
This behavior breaks the BYE procedure.
Any advice ?
Chris
Hi all,
I'm building an simple PBX with 1 Kamailio as load balancer for several
Asterisk servers.
My issue is if an extension is in-call on Asterisk#1 wants to consult
transfer to another number, it makes another call and Kamailio forward this
new call to another Asterisk and cause call tranfer will fail.
Does anyone here have tips or sugestions to resolve this?
Thanks in advance for your help.
Best regards
Kamailio v5.6.0 is out – it comes with 7 new modules and a considerable
set of improvements touching again more than 90 existing modules.
You can read detailed release notes at:
  * https://www.kamailio.org/w/kamailio-v5-6-0-release-notes/
Many thanks to all developers and community members that made possible
this release.
v5.6.0 brings more flexibility and optimizations across many components,
plenty of new variables and transformations, load balancer enhancements,
generic iterators for SIP headers and body lines, alternative http
client, NATS PubSub connector, improvements to STIR/SHAKEN, IMS/VoLTE,
rtpengine and tls as well as more functions exported to KEMI interface
... just to list only a few here. Enjoy Kamailio v5.5.0!
Thank you for flying Kamailio!
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - Online: June 20-23, 2022
* https://www.asipto.com/sw/kamailio-advanced-training-online/
Hello,
with some effort directed lately to convert the wiki content to markdown
files and host them on github, it's time to now to nail down the path to
release nest major release for Kamailio, respectively v5.6.0.
What's new in this major release as well as upgrade guidelines have to
be built, but I hope to be done in time to release Kamailio v5.6.0
either on Monday, June 23, 2022 or on Wednesday, June 25, 2022. Should
anyone consider a different release planning, let's discuss it.
If anyone wants to help with them, the content has to be added to the
github wiki repository:
 * https://github.com/kamailio/kamailio-wiki
If not there, new files have to be created and linked from the main page.
The wiki is built with mkdocs into html and made available for browsing at:
 * https://kamailio.org/wikidocs/
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - Online: June 20-23, 2022
* https://www.asipto.com/sw/kamailio-advanced-training-online/
Hi,
You are currently using TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384 256
Teams stopped using TLSv1/ TLSv1.1 and only allowing TLS1.2+
So change your kamailio TLS settings to enforce only it
method = TLSv1.2+
After restarting kamailio your team's connections should be good.
--
Best Regards,
Ahmed Fouad
Hello,
IPv6 routers never fragment packets. Rather, they drop a packet that
is too large for a (local) MTU and send back ICMPv6 "Packet Too Big".
This seems to cause loss of larger SIP messages when an ISP tunnels
their IPv6 at the expense of the MTU.
The pmtu_discovery flag sets Don't Fragment in IPv4 traffic; in IPv6
this is an implied property. Does Kamailio learn a lower MTU from
any "Packet Too Big" for IPv6 even if pmtu_discovery is not set?
Future resends can then be fragemented appropriately.
The udp_mtu setting diverts to another protocol, but that would be a
setting as low as the worst peer, impacting all. It would be a weird
struggle with a telco serving many. PMTU would be better to rely on,
but how does it work in Kamailio?
Details on
https://www.rfc-editor.org/rfc/rfc3542#section-11.3https://stackoverflow.com/questions/38817837/how-does-mtu-retransmission-wo…
Thanks,
-Rick
Hi,
I have a kamailio that is has an HTTP message server. Is it possible to
send the SIP status code back in the HTTP reply? Is it possible to
suspend an xhttp request while some other stuff happens and then send
the reply later?
The relevant bit of the config currently looks like
event_route[xhttp:request]{
if($hu == "/sms"){
$uac_req(method)="MESSAGE";
$uac_req(ruri)="sip:1234@example.com";
$uac_req(furi)="sip:4567@example.com";
$uac_req(turi)="sip:1234@example.com";
$uac_req(body)=$rb;
uac_req_send();
xhttp_reply("200", "OK", "text/plain", "Sent")
}
}
Regards,
Tim
Kamailio first gives timeout on ctl unix socket as I am exporting data
using prometheus exporter, after a few minutes it stops responding to any
sip request on default/production udp port binded with multiple IP
addresses for sip traffic.
The other listing port which is used by keepalived check script for
bing-pong keeps responding to option messages.
Its very random behaviour occurs after a few days or after a few months,
the system having max load 350 concurrent calls with load average 200-300.
I am attaching core dump which is collected before restarting the process.
Please let me know if more information is required.
version: kamailio 5.4.1 (x86_64/linux) 2ca223
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE,
USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC,
TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT,
USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST,
HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024,
BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 2ca223
Thankyou in advance.
--
Regards
M Arqum
Hi everyone,
we are running a call center with really good to use hardphones and audio only up to this point. Because of changing regulation, we soon have to deal with video calls as well, but only for a fraction of the calls (below 1%).
Instead of switching everyone to clumsy softphones for the rare case of a video call, I’m exploring the ability to branch an incoming call into a pure audio call to the hardphone and optionally a pure video call to the softphone.
Has anyone done this in the past and can share some experiences/ideas on
1. Can it be done purely with Kamailio and rtpengine? I don’t have a clear picture of how to do it purely with Kamailio on the SIP side, because we end up with two independent legs (to the hardphone and the softphone). Or do I need to deploy an Asterisk, Yate, freeswitch, etc. and doing it as a 3-way conference where one party gets both RTP streams (the trunk) and the other two parties only get one RTP stream (either audio or video)?
2. Was it worth the effort or a steady candidate for troubles?
I’m looking forward to your thoughts, especially on question b).
Have a nice weekend,
Christoph
---
Christoph Rüdiger
Digital Operations Architect
DTX OU DACH
M +49 152 3828 0376 | christoph.ruediger(a)tkelevator.com<mailto:christoph.ruediger@tkelevator.com>
TK Aufzüge GmbH | Münchener Str. 100c | 45145 Essen | Deutschland | www.tkelevator.com/de<http://www.tkelevator.com/de>
VORSITZENDE DES AUFSICHTSRATS Inge Delobelle | GESCHÄFTSFÜHRUNG Burkhard Schlenker (Vorsitzender) | Christian Fongern | Katja Schrafft | SITZ DER GESELLSCHAFT Neuhausen a. d. F. | REGISTERGERICHT Stuttgart HRB 731152
This e-mail (including any attachments) may contain confidential and/or privileged information. Any unauthorized use or dissemination of this message in whole or in part is strictly prohibited. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail.
Hello,
kamailio could not respond to the question:
This machine is on aws, there is no high load, there is an external ip
listening to the WebSocket 443 port, and sometimes there are some
unknown detection signals "SSTP_DUPLEX_POST" that will cause port 443
to fail to respond. Need to restart kamailio
Then, it stopped responding again after about a month.
Attach the detailed log
details:
root@sip1-aws:~# /home/pkg/kamailio/sbin/kamailio -V
version: kamailio 5.3.9 (x86_64/linux) a5fd0a
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE,
USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC,
TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT,
USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST,
HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024,
BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: a5fd0a
compiled on 22:31:18 Mar 31 2022 with gcc 5.4.0
Thanks.
Hi
When I Publish to RabbitMQ and the connection is down, the server just
hangs and there is no timeout. I am using KEMI with python3 and have tried
different timeout functions to circumvent the hanging but it doesn't seem
to work
1. Is there a way to tell if RabbitMQ is connected?
2. using python is there a way to timeout a KSR function?
Thanks guys!
Summary:
We have a Kamailio server as our sip proxy server, sip firewall with WebSocket and RTP engine configured on it (the Kamailio Server). But we experience one way audio, no audio, hang up after 30s, when we try making calls between internal extensions (eg extension 100 to call extension 105) and external calls (eg extension 100 to call mobile number 09056925668) as well. The call flow is as:
Webrtc client<------->Kamailio1+rtpengine<-----Asterisk---->Kamailio2<-------->Telco Provider
The asterisk communication between all three boxes is via local IP (All ports open between them). The Kamailio 1 box where we have our sip registration cache, has rtp ports and wss port open on the internet.
Asterisk 18.9.0
Kamailio 5.5.3 + RTPengine 10.4.0.0
Debian 11 bullseye
Kindly see attached below a diagram depicting the VoIP network flow and also attached are logs files for the webrtc client and server side.
Ezenwaka Kelvin Arinze
VOIP Engineer
Tel:Â (+234) 9056925668
DISCLAIMER:
The message and its attachments are for designated recipient(s) only and may contain privileged, proprietary and private information. If you have received it in error, kindly delete it and notify the sender immediately.
PressOne accepts no liability for any loss or damage resulting directly and indirectly from the transmission of this e-mail message.
Hello,
One of our customers has lots of extensions that register to our platform
using all the same IP. Sometimes they get caught in our pike velocity rules
but if we increase the values to accommodate this client then all the
others could abuse the system.
I was wondering if pike_check_ip(ipaddr) needs strictly an IP as
parameter or can it be a string?
I was thinking of using pike instead of by $si by something like $fU-$si
but I don't know if this would work?
I need to either handle separately different extensions from the same IP or
a way to adjust the pike config values just for one specific IP... I'm not
sure either of these is possible with pike?
My alternative is just use table and mimic the functionality myself which I
don't think is too complicated, but I'd love to know if I'm missing a
fast-path here...
Thanks!
Joel.
Hello,
maybe is a very basic question; How Kamailio can accept any kind of
register, over IP or domains.
Example, accept authenticate REGISTER from ip 1.2.3.4 or sip.domain.org
or sip1.domain.org, domains associated with ip 1.2.3.4
Thank you in advance.
Regards
--
---
I'm SoCIaL, MayBe