Hello experts
I have a setup where webrtc client registrations (from behind a NAT / VPN)
are on kamailio and the INVITE to begin a call is sent by freeswitch to
kamailio which is then expected to relay it to the subscribed webrtc client.
i understand, from documentation and general thinking, that kamailio cannot
open a new connection to such a client and should reuse an open connection
(a websocket in my case).
i have setup kamailio as generic as it may sound and expect t_relay() to do
the magic of forwarding the invite, however, from logs i don't see anything
indicating kamailio is using any existing connection and hence my
outgoing invite requests are stuck showing pointed towards a vpn gateway
which was the registered "location" of client (which is the public ip of
VPN gateway)
please advise what relevant information can i produce here to make the
query more readable and clear.
headed here after trying just about all the resources available on the
topic.
e.g. if my location record looks like
AoR: 1004(a)mydomain.com
Contacts:
- Contact:
Address: sip:1004@11.22.33.44:49179
CFlags: 64
CSeq: 3087
Call-ID: 189jss21e24ntve1ggsuli
Expires: 593
Flags: 0
Instance: <urn:uuid:8a936bbc-514f-4755-bed0-edc644dd4453>
KA-Roundtrip: 0
Keepalive: 1
Last-Keepalive: 1683652755
Last-Modified: 1683652755
Methods: 7071
Path: <sip:10.10.6.196:3040;received=sip:mydomain.com
;lr;nat=yes>
Q: -1
Received: sip:11.22.33.44:49179;transport=ws
Reg-Id: 1
Ruid: uloc-645601c4-131220-3764
Server-Id: 0
Socket: tls:1.2.3.4:4443
State: CS_SYNC
Tcpconn-Id: 3916
User-Agent: JsSIP 3.9.0
i try to lookup the location and find the address, and then route to that
address by setting $ru
in sngrep it does show that kamailio is trying to send INVITE to
11.22.33.44:port (which is the VPN gateway) but it isn't exactly clear from
logs if this is being done over an existing connection.
how does kamailio identify if a connection exists for a user (for each
contact in AOR, if multiple contacts exist for a user -- i.e. different
browser sessions?)
if(reg_fetch_contacts("location", "$ru", "caller")) {
$var(i) = 0;
while($var(i) < $(ulc(caller=>count)))
{
$ru = $(ulc(caller=>addr)[$var(i)]);
$var(i) = $var(i) + 1;
setflag(FLT_DLGINFO);
dlg_manage();
t_relay();
}
}
--
Shwetank
Hi List,
we are running several stateless SIP Loadbalancers using Kamaillio 5.1 and 5.6.
Now we would like to perform an async_http request if an INVITE matches certain criteria. The request itself is performed very similar to how it's described here [1]
This uses the transaction module in order to assure that the response can be mapped to the original request. However, this also means that the processing of the entire request becomes stateful which we would like to avoid.
We tried to use t_release() in the callback route (in [1] this route is called "RELAY_API_RESPONSE"). However, documentation says that this is only allowed in the REQUEST_ROUTE.
Is there an easy way to circumnavigate this issue?
Cheers
[1]: https://wazo-platform.org/blog/kamailio-routing-with-rtjson-and-http-async-…
--
Julius Flohr - Voice Engineer - flohr(a)sipgate.de
Telefon: +49 (0)211-63 55 55-0
Mobil: +49 (0)1579-000-0205
Telefax: +49 (0)211-63 55 55-22
sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
Steuernummer: 106/5724/7147, Umsatzsteuer-ID: DE219349391
www.sipgate.de - www.sipgate.co.uk
Hi team
I upgraded our lab to 5.6.4 from the official repository for ubuntu
Jammy.
Now I get crashes related to TLS:
May 5 14:58:40 dev-cpereg01 kamailio[36147]: CRITICAL: <core> [core/mem/q_malloc.c:519]: qm_free(): BUG: freeing already freed pointer (0x7f4fedbed4e8), called from tls: tls_init.c: ser_free(323), first free tls: tls_init.c: ser_f
ree(323) - ignoring
May 5 14:58:40 dev-cpereg01 kamailio[36147]: CRITICAL: <core> [core/mem/q_malloc.c:519]: qm_free(): BUG: freeing already freed pointer (0x7f4fedd72b88), called from tls: tls_init.c: ser_free(323), first free tls: tls_init.c: ser_f
ree(323) - ignoring
May 5 14:58:40 dev-cpereg01 kamailio[36177]: CRITICAL: <core> [core/mem/q_malloc.c:519]: qm_free(): BUG: freeing already freed pointer (0x7f4fedd9e4a0), called from tls: tls_init.c: ser_free(323), first free tls: tls_init.c: ser_f
ree(323) - ignoring
May 5 14:58:40 dev-cpereg01 kamailio[36157]: CRITICAL: <core> [core/mem/q_malloc.c:519]: qm_free(): BUG: freeing already freed pointer (0x7f4fedd9e428), called from tls: tls_init.c: ser_free(323), first free tls: tls_init.c: ser_f
ree(323) - ignoring
And a bit later on:
May 5 14:58:46 dev-cpereg01 kamailio[36179]: CRITICAL: <core> [core/pass_fd.c:277]: receive_fd(): EOF on 34
May 5 14:58:46 dev-cpereg01 kamailio[36143]: ALERT: <core> [main.c:774]: handle_sigs(): child process 36161 exited by a signal 11
May 5 14:58:46 dev-cpereg01 kamailio[36143]: ALERT: <core> [main.c:777]: handle_sigs(): core was generated
May 5 14:58:46 dev-cpereg01 kamailio[36143]: INFO: <core> [main.c:799]: handle_sigs(): terminating due to SIGCHLD
Has there been a fundamental change in TLS? Or did I miss something
important to do on a 5.5 => 5.6 upgrade?
--
Mit freundlichen Grüssen
-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hello,
We are using a product which already uses the "app_perl" module and sets
the "filename" parameter to its own Perl library.
However, we want to add more Perl code without having to modify that
product's library. Does anyone know of a way to do this? To have Kamailio
use Perl code from two different places?
I guess in the worst case scenario we could use "app_python3", and have
some Python code call subprocess.run() on the Perl code.
Thanks very much,
--
David Cunningham, Voisonics Limited
http://voisonics.com/
USA: +1 213 221 1092
New Zealand: +64 (0)28 2558 3782
Hello,
the branch 5.7 was created, therefore the master branch is open for
adding new features, to be part of future release series v5.8.x (or
whatever version is decided for next series).
Any bug fix committed to master that applies to 5.7.x or older stable
branches should be backported as usual with "git cherry-pick -x ..." to
appropriate branches like 5.7 or 5.6.
Expect that v5.7.0 will be released in a few weeks from now.
Based on the workflow used during the past years, the next future
release v5.8.0 should be out after another 8-10 months of development,
plus 1-2 months of testing, so sometime during the first part of 2024.
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference - June 5-7, 2023 - www.kamailioworld.com
Hello,
the branch 5.7 has been created, to be used for releasing v5.7.x series.
To check out this branch, the following commands can be used:
  git clone https://github.com/kamailio/kamailio kamailio-5.7
  cd kamailio-5.7
  git checkout -b 5.7 origin/5.7
Pushing commits in this branch:
 git push origin 5.7:5.7
Note that 5.7 is an official stable branch, so only bug fixes, missing
kemi exports (discuss on sr-dev if not sure) or improvements to
documentation or helper tools can be pushed to this branch.
As usual, if there is a bug fixed, commit and push first to master
branch and then cherry pick to 5.7 branch:
 git cherry-pick -x COMMITID
In few weeks, the first release from branch 5.7 will be out,
respectively Kamailio v5.7.0.
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference - June 5-7, 2023 - www.kamailioworld.com
Hello
Is there a possibility to send a reply from within a branch route?
Experimental case (yes, I know it's a non working set-up, but I just
wonder if that would be possible).
Two registrar nodes, location information shared between the two.
CPE registers via TLS, therefore the existing connection shall be used
towards the CPE and that only exists on one of the registrars.
So in the Branch Route I would like to do something like:
$var(socket) = $(ulc(aor=>socket)[$T_branch_idx]);
if ($var(socket) == 0) {
send_reply("503","no local socket");
}
This would cause the core routing instance to select the next registrar
from the dispatcher list which hopefully holds the active socket.
But none of the 'send_reply' variants seem to be allowed within a
branch route.
Or is there a better solution?
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hello,
I am planning to split 5.7.x series on its own git branch 5.7 on
Thursday, May 4, 2023.
After that, master branch will be open for new features (to become part
of 5.8 or what ever version will be decided to be next). Usually testing
should continue for branch 5.7 for another 1-2 weeks, then, if no
relevant road blockers pop up, we should release 5.7.0 as first stable
version in the 5.7.x series.
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference - June 5-7, 2023 - www.kamailioworld.com
Hi
5.6.4
I'm trying to add uacreg logic to my setup. When I add a new entry via rpc I
see that the reg is stored in mem but not inserted in the database for
persistency.
My uac params are like this:
modparam("uac", "reg_db_url",DBURL)
modparam("uac", "reg_timer_interval", 900)
modparam("uac", "reg_retry_interval", 10)
modparam("uac", "reg_random_delay", 0)
modparam("uac", "reg_hash_size", 12) ## 5.6
modparam("uac", "reg_db_table", "kam_uacreg")
modparam("uac", "reg_contact_addr", "192.168.255.254:5060") #Won't be used
#modparam("uac", "default_socket", "udp:192.168.0.125:5060") #Won't be used
modparam("uac", "reg_keep_callid", 1)
modparam("uac", "reg_active", 1)
modparam("uac", "reg_gc_interval", 30)
modparam("uac", "reg_use_domain", 0)
I'm used to add via rpc and have db persistency. Like for exmaple using the
domain module. Is this a bug in my config or does this module behave different?
Should I insert in the db and call to enable via RPC? If so, what would be the
best way to enable only the new inserted register instead of reloading all the
regs? It's expected to have many changes and do not want to have full reloads
all the time.
cheers,
Jon
--
PekePBX, the multitenant PBX solution
https://pekepbx.com