[SR-Users] Recommendation for a signaling B2BUA to work with Kamailio on Ubuntu
Hi I wonder if anyone could maybe recommend what to use as signaling B2BUA to work with Kamailio to handle spiralling / looping calls and to reduce the number of Route, Via Header and message size, which cause issue with a large number of CPE. Requirements: * New CallID needs to be generated * Handling Route and Via * ~ 2000 concurrent calls. * Preserving custom SIP X- header * Routing NOTIFY for MWI etc. Handling RTP is not required! What I have been looking at more closely: = FreeSwitch = Got stuck trying to solve the dependencies to get it to run/build on ubuntu jammy. Has anyone experience in running it in a docker container? Will it perform? = Sippy = Very small, very simple, unfortunately removes customer SIP headers and does not forward NOTIFY. (It's python, so maybe this could be easily implemented/fixed). = SEMS = Does not seem to be actively developed in the last, couple of years. Looks quite bloated to me for what I need. = Asterisk = Each customer header has to be copied, wants to handle RTP and bridge by issuing Re-Invites. Not sure how to route stuff like NOTIFY. Also from experience I fear asterisk would translate sip reply codes (like 608 and 607) it does not know to some 4XX default. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Parsing Error with SIP 607 Response
Hi Mustafa > SIP/2.0 607. I didn't check the RFC. But doesnt a reply need to be in the format SIP/2.0 XXX AA Is the text missing after the numerical error code? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Access avp vars in a cancel? How to pass information from an INVITE to a CANCEL?
Hi > > > > > > >data="[sip_h_X-PGPX=${uuid}]sofia/internal/$1@${sendto}"/> application="hangup"/> > > I was not aware it was that simple. Thank you for the education! Indeed. I was considering asterisk as I tend to use what I know. But with Asterisk I would have to add quite some config to pass on required additional customer sip header. If that's that simple with FreeSwitch and header can be transparently passed on, I'll have a look at it. This would also solve another problem. We have some CPE with limited memory which struggle with a long record-route list. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Assistance Needed: Converting 11-Digit US Numbers to E.164 in Kamailio
Hi Kumar > Before writing the code, I want to know if there is already a > solution to this problem in one of the modules, so that I won't > reinvent the wheel. US numbers are fixed lenght 11 digits? What is the usual representation of a 'local' US number? Does it start with a 0? I do this (to translate Swiss local numbers to e164): $var(check_number) = "012 345 67 89" # local number example, use $rU or $fU or whatever you want to translate. route(TRANSLATE_TO_e164); $rU = $var(result); route[TRANSLATE_TO_e164] { $var(result) = 'invalid'; $var(check_number) = $(var(check_number){s.rmws}); # Remove spaces if ($var(check_number) =~ "^\+") { $var($result) = $var(check_number); # Already e164 } else if ($var(check_number) =~ "^00") { # international number in local notation replace 00 by + $var(result) = "+" + $(var(check_number){s.substr,2,0}); } else if ($var(check_number) =~ "^0") { # Swiss number in local notation replace 0 by +41 $var(result) = "+41" + $(var(check_number){s.substr,1,0}); } } And of course I have a corresponding TRANSLATE_TO_LOCAL to display numbers to the customer in a format they are used to in Switzerland. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Access avp vars in a cancel? How to pass information from an INVITE to a CANCEL?
Hi Alex > Curious: why is this necessary? Is there a possibility there is an > unnecessary complicating assumption at the root of your setup? > > Maybe not, but I have to wonder. *sigh* yes I guess you may ask. Somehow I think we do 'normal' VSP business, but it looks like we seem to have a complicated set-up. Our set-up basically looks like this: We have a core kamailio node taking care of dialog handling, CDR gathering for billing, routing and which has interconnections to other VSP, voicemail etc. but they are more or less firewalled from the internet. We have a registrar kamailio node taking care of connected customer, dynamic registrations, authentication facing the bad dangerous internet. No dialog module enable! This node does not know how to route stuff. It his relatively simple minded. If the call is from a customer, route it to the core who will then account for the call and know how to route. If the call is from the core, then look up the location and route to the customer if registered. Of course there is more like failure handling, call forwarding handling etc. but you get the basic idea. At the moment, we use a commercial SBC to handle RTP on the interconnection side to other VSP, but also to proxy RTP and registrations from customer CPE. Especially with registrations it's not always behaving according to SIP standard and causes a lot of issues. But also on the interconnection to other VSP side, it has some limitations, for example it can't stand crypto in an SDP and will reply with 450 (or whatever the sip code is to reject an SDP) when crypto is present. It also considers ipv6 addresses to be something that needs rejecting. We want to get rid of the SBC, especially on the side towards our customer, the sooner the better. Hey we could allow customers to encrypt their RTP traffic and talk a modern ip protocol! So, as the registrar are facing the bad and dangerous internet anyway I somehow prefer to keep our core kamailio a bit behind firewalls, my conclusion was to run rtpengine on the registrar any maybe also benefit from some advantages with firewalls and cpe who prefer to exchange RTP and Signaling to the same IP. Now picture customer A on the registrar calling customer B on the same registrar. The registrar authenticates the caller, rtpengine maybe talks ipv6 and crypto as suggested by the caller, throws in some ICE magic etc. all nice stuff to do with the customer. But as the registrar instance has no clue where the destination number is, it just routes the call to the core. As the destination could be behind our SBC, or maybe another VSP which only accepts IPv4, I have to make sure I remove crypto and use IPv4 in the SDP towards the core. Well, now the call is on the core, the routing table for the destination is looked up. Hey, it's also a customer of ours, let's route the call back to the registrar! The registrar look up the location table and determines what ip version and protocol that customer is registered with, if it's IPv6 then activate ICE. Offer Crypto! Well, for this to work, I need to run the call separately through rtpengine again, with a different callID. If I activate loop-protect on rtpengine, then the settings which are compatible towards our SBC and interconnection would be sent to the customer as the 2nd invocation of rtpengine would be ignored. I hope this makes sense. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Access avp vars in a cancel? How to pass information from an INVITE to a CANCEL?
Hi Alex > You can use $T_inv(...) to access attributes of the original INVITE > transaction, to which the CANCEL pertains: > > https://www.kamailio.org/wikidocs/cookbooks/5.8.x/pseudovariables/#t_invpv Thank you, I'll check that out. > However, you may instead consider the attractive simplicity of just > calling rtpengine_delete() for every CANCEL, regardless of whether > RTPEngine was engaged. If the tuple is not > recognised by RTPEngine, no harm, no foul -- not an even error. Yes, > there is the overhead of a synchronous round trip to RTPEngine > involved in this. However, in most cases, the consequences aren't too > significant. Unfortunately, life sometimes is not that simple, like when you have to find a way to process spiralling calls with rtpengine. And yes, unfortunately loop-protect is not the solution as some codec quicks are needed depending on the direction of the call. For this to work, each spiral needs to pass an unique callID to rtpengine. So adding a counter to the real callID, let's call it extraID did the trick (with an X- header and adding a rr_param to process messages the other way round etc.) But i got stuck when trying to nicely tell rtpengine to stop listening for callID-extraID on a CANCEL as I have not yet found a way to get hold of that extraID. rtpengine will eventually time out, but I try to tidy up correctly. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Race condition in dialog on 422 reply deletes variables.
Hi all I fear I have found a race condition when a new dialog is being created right after the old one with identical callid is being deleted. I logged a dialog variable on each message and reply and this is what I found: => INVITE Initial dialog variable set. <= 422 in 'failure route' dialog variable still present 422 is being relayed event_route[dialog:failed] triggered dialog variable present CDR written => ACK to 422 dialog variable present. => INVITE (same Callid/ftag/cseq++ session timer according 422) Initial dialog variable set <= 200 OK+SDP (manage_reply) event_route[dialog:start] triggered ### dialog variable set during the INVITE is lost! Probably all dialog variables set in the dialog unconfirmed stage are lost at this point. I fear, some mechanism that is still cleaning out the previous dialog with the same callID is a bit over enthusiastic and also cleans out the dialog variables set after the new invite for the same call. I found a work-around by using AVP variables during the unconfirmed stage and then use event_route[dialog:start] to set the desired dialog variables from those AVP. I also had a quick peek at the code. It looks like every reply status >= 300 is considered a failure in unconfirmed dialog state. Not sure if this is true for the 422 status, this does not terminate a call but causes the caller to re-issue the invite. => More testing ongoing. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Handling 422 Message (was: Re: dlg_vars of existing dialog not set after loose_route())
Hi After more intensive testing, I narrowed the issue down. CPE A => Kamailio+dialog => CPE B CPE A is sending an INVITE with a session timer too smal for CPE B. CPE B replies with 422. This causes the dialog module to trigger the 'call failed' event and attempt to delete the dialog data. CPA A does not consider the call failed. It repeats the INVITE with CSEQ + 1 and with the session timer as desired by CPE B. The call is then processed as if in dialog, but some, strangely not all, dialog variables are lost. I fear the repeated invite with identical callID and from_tag causes a race condition in handling the dialog variables. I see there are two attempts by the dialog module to write a CDR with the same callID. After processing the 422 and when the call ends while processing BYE. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] dlg_vars of existing dialog not set after loose_route()
Hi Gang I have a strange issue after upgrading to 5.7 I use dlg_vars to keep some information until the end of the call to write them in a CDR. One of those variables records the timestamp of the first invite to determine how long it took from the invite to the 'connection established' if at all. The CDR is written when the BYE is being processed by the dialog module. Strangely, since updating to 5.7 (used to work with 5.5 and 5.6 I think, but I could be mistaking as other changes were made to the config) my dialog variables are null when BYE is being processed. reading the docs, I learned that that dlg_var are only polulated after loose_route() has been called. So I added some logging statement to track if the BYE in question is processed by loose_route(). Yes, it is, loose_route() returns success on the BYE in question. But when I log the content of my dlg_var after loose_route() it is still null. Any idea what the cause could be? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to keep SIP messages small, possibly below fragmentation limit?
Hi In the process of getting rid of our commercial B2Bua SBC and handling all clients directly via Kamailio... We have come across some (unfortunately many we have in use) CPE which have an issue with fragmented packets or which simply do not allocate enough memory to parse or create messages of a certain size. Their SIP stack just crashes with errors like 'message to large for send buffer' and similar. This affects messages with containing as little as 5 via and 4 record-route header and a couple of codec in the SDP. Is there a recipe for trying to keep packets as small as possible? I would like to avoid using the topos module as I issues with this module completely failing in certain situations. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to query, if callid is handled by rtpengine module already?
Hi I have come across this challenge: Initial invite (no to_tag) has is authenticated and has credentials. So a lookup for the username is made to determine if the customer needs backhauling, thus rtpengine needs to be engaged. On a subsequent invite (re-invite to change codec or to refresh session timer) there is a to_tag so it is being routed without sending a challenge and has no auth username. I don't use dialog on the registrar. This is another transaction. So I don't know, if I need to engage rtpengine on that DSP or not. What is the best way to find out, if rtpengine is already handling that callid? if(rtpengine_query_v("j", "$var(dummy)")) { rtpengine_manage(); } basically works, but generates a couple of ugly error messages in the log as rtpengine_query_v does not find the call. Is there a nicer way? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: What happens when using exit or return in branch route in parallel branching?
Hi Alex > But I'll have a shot at $nh, thanks for pointing that out! Thank you, using the $nh variables within the branch route solved all my issues with trying to determine where that branch is being sent to to correct handle some special CPE cases and rtpengine. Now for example I can correctly hint with IP protocol shall be used by rtpengine depending if the CPE is using legacy v4 or modern v6 IP :-) Still needs some testing to see what realy happens if the first branch is using IPv4 (RTP with IPv4) and the next one is using IPv6 (RTP with IPv6 for SAME callid) and then the first one picks up the call. Is rtpengine stuck with IPv6 or will it listen to both protocols because it processed two offer for the same callid? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: usrloc database duplicate keys issue
Hi Fred > Did you upgrade the database (assuming an upgrade from pre-5.6): > > https://www.kamailio.org/wikidocs/install/upgrade/5.5.x-to-5.6.0/ Yes I did. I even remember reading this article. That is the only change, right? -- add index on connection_id for usrloc module location table CREATE INDEX tcpcon_idx ON location (`connection_id`); show create table location: CREATE TABLE `location` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `ruid` varchar(64) NOT NULL DEFAULT '', `username` varchar(64) NOT NULL DEFAULT '', `domain` varchar(64) DEFAULT NULL, `contact` varchar(512) NOT NULL DEFAULT '', `received` varchar(128) DEFAULT NULL, `path` varchar(512) DEFAULT NULL, `expires` datetime NOT NULL DEFAULT '2030-05-28 21:32:15', `q` float(10,2) NOT NULL DEFAULT '1.00', `callid` varchar(255) NOT NULL DEFAULT 'Default-Call-ID', `cseq` int NOT NULL DEFAULT '1', `last_modified` datetime NOT NULL DEFAULT '2000-01-01 00:00:01', `flags` int NOT NULL DEFAULT '0', `cflags` int NOT NULL DEFAULT '0', `user_agent` varchar(255) NOT NULL DEFAULT '', `socket` varchar(64) DEFAULT NULL, `methods` int DEFAULT NULL, `instance` varchar(255) DEFAULT NULL, `reg_id` int NOT NULL DEFAULT '0', `server_id` int NOT NULL DEFAULT '0', `connection_id` int NOT NULL DEFAULT '0', `keepalive` int NOT NULL DEFAULT '0', `partition` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `ruid_idx` (`ruid`), KEY `account_contact_idx` (`username`,`domain`,`contact`), KEY `expires_idx` (`expires`), KEY `connection_idx` (`server_id`,`connection_id`), KEY `tcpcon_idx` (`connection_id`) ) ENGINE=InnoDB Yes, that key is present! -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Passing variables to branches (Re: Re: How to correctly drop a branch?)
I finally worked it out. $var(c) = 0; Branch Count looping through the ul: append_branch($(ulc(aor=>addr)[$var(i)])); $(branch(dst_uri)[-1]) = $(ulc(aor=>received)[$var(i)]); $(branch(send_socket)[-1]) = $(ulc(aor=>socket)[$var(i)]); $avp(ua) = $(ulc(aor=>user_agent)[$var(i)]); $var(c) = $var(c) + 1; branch_route[BR_T] { $var(uax) = $var(c) - $T_branch_idx - 1; xlog("L_INFO", "$cfg(route): BR_idx: $T_branch_idx UAX: $var(uax) User Agent: $(avp(ua)[$var(uax)]) \n"); route(FILTER_USERAGENT); # Do user_agent specific stuff. } I hope append_branch works by adding at the end of the index and never inserting a branch in between. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: usrloc database duplicate keys issue
Hi Henning Missed the first line with the specific issue: Jan 26 07:27:45 dev-cpereg01 kamailio[2708456]: ERROR: db_mysql [km_dbase.c:122]: db_mysql_submit_query(): driver error on query: Duplicate entry 'uloc-65b237f8-28983d-1' for key 'location.ruid_idx' (1062) Jan 26 07:27:45 dev-cpereg01 kamailio[2708456]: ERROR: [db_query.c:244]: db_do_insert_cmd(): error while submitting query Jan 26 07:27:45 dev-cpereg01 kamailio[2708456]: ERROR: usrloc [ucontact.c:686]: db_insert_ucontact(): inserting contact in db failed somedudetp0216 (uloc-65b237f8-28983d-1) Jan 26 07:27:45 dev-cpereg01 kamailio[2708456]: ERROR: usrloc [urecord.c:419]: wb_timer(): inserting contact into database failed (aor: somedudetp0216) -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to correctly drop a branch?
Ok I re-worked this. I'm not adding branches I don't want anymore. But I still need to access: $(ulc(aor=>user_agent)[INDEX]) from within the branch route to tweak some headers for specific user agents. The ulc INDEX does not match the Branch INDEX. How can I pass an information into a branch route which is specific to a branch route like the user_agent associated with the registration to which the call is sent? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to correctly drop a branch?
Hi https://www.kamailio.org/wiki/cookbooks/devel/pseudovariables#branch_name_-_branch_attributes "Assigning $null to uri attribute will drop the branch, for the rest of attributes will just set the value to null." Where do I need to assing $null to the brach URI to get it dropped? And what happens to the index, is there a gap, or do the subsequent branches get re-indexed so they don't match with the ulc indexes anymore? Actual example, I have multiple contacts I would like to add to branches. Two of the contacts are from the location database + an additional contact. # Basic Branch: $ru = $(ulc(aor=>addr)[0]); $du = $(ulc(aor=>received)[0]); $fs = $(ulc(aor=>socket)[0]); # Additional Branch: append_branch($(ulc(aor=>addr)[1])); $(branch(dst_uri)[-1]) = $(ulc(aor=>received)[1]); $(branch(send_socket)[-1]) = $(ulc(aor=>socket)[1]); and so on, actually a loop over all ulc contacts. # Lasst Additional Branch, point to other registrar, not to a usrloc location. append_branch($ru); $(branch(dst_uri)[-1]) = "sip:other-registrar:5060;transport=udp"; $fsn = "LocalUDPv4"; $(branch(send_socket)[-1]) = $fs; t_on_branch("BR_T"); branch_route[BR_T] { $var(socket) = $(ulc(aor=>socket)[$T_branch_idx]); if ($var(socket) == 0) { xlog("L_INFO", "$cfg(route): DROPPING BRANCH: $T_branch_idx No local socket on this registrar\n"); $(branch(uri)[$T_branch_idx]) = $null; } } I don't get this right! Call is still sent to that contact. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] usrloc database duplicate keys issue
Hi I have come across an issue with the usrloc database on kamailio 5.6 and 5.7 Jan 26 07:19:45 dev-cpereg01 kamailio[2708456]: ERROR: [db_query.c:244]: db_do_insert_cmd(): error while submitting query Jan 26 07:19:45 dev-cpereg01 kamailio[2708456]: ERROR: usrloc [ucontact.c:686]: db_insert_ucontact(): inserting contact in db failed somedudetp0216 (uloc-65b237f8-28983d-1) Jan 26 07:19:45 dev-cpereg01 kamailio[2708456]: ERROR: usrloc [urecord.c:419]: wb_timer(): inserting contact into database failed (aor: somedudetp0216) settings: # - usrloc params - modparam("usrloc", "db_url", DBLOCAL) modparam("usrloc", "db_mode", 2) modparam("usrloc", "use_domain", 0) modparam("usrloc", "ka_mode", 0) modparam("usrloc", "ka_filter", 1) modparam("usrloc", "timer_procs", 1) modparam("usrloc", "ka_from", "sip:p...@sip.imp.ch") modparam("usrloc", "server_id_filter", 1) # Use DMQ to sync userloc loadmodule "dmq_usrloc.so" # Replicate usrloc via dmq # Enable userloc sync modparam("dmq_usrloc", "enable", 1) # Do a full sync on start modparam("dmq_usrloc", "sync", 1) I assume, when kamailio is being restartet there are some expired entries still present in the database which kamailio tries to insert on a new registration. This leads to this duplicate key error. Is there a way to tell kamailio to use 'replace into' instread of 'insert into'? Solution for now, is to manually delete expired entries from the database. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to assign xavp array to htable?
Hi Alex > sql_xquery("db", "SELECT ...", "stuff"); > > $var(i) = 0; > > while(defined $xavp(stuff[$var(i)])) { > $sht(tbl=>$xavp(stuff[$var(i)]=>id)) = > $xavp(stuff[$var(i)]=>otherval); $var(i) = $var(i) + 1; > } > > etc. Thank you. So there is no 'direct' way I missed. Ok, I'll find a way around ;-) -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: xavp_params_explode broken comma in value?
Hi Daniel > comma is not allowed in an unquoted value for SIP parameters because > it is separator for header bodies that are set on the same header > name. Practically the comma is the end of parameters list. Thank you for your confirmation I was on the right track. > It should work with: > > xavp_params_explode("a=foo;c=\"hello,world\";e=baar", "x"); Any recipe on how to solve if the value is the 'authentication' password taken from the database? As far as I understood the SIP RFC a comma is permitted in the SIP password itself, as it is never present cleartext in a sip header. Quick example of what I do when receiving a REGISTER with credentials to pull the password: $var(query) = "select user,password,language from sometable where auth_user = '" + $var(auth_user) + "' limit 1"; $var(qresult) = sql_xquery("database", "$var(query)", "userdata"); xavp_params_implode("userdata","$var(xuserdata)"); $var(xuserdata) is "user=JohnDoe;password=secret,password;language=de_CH" This is the stored in an $sht to be cached and available for a while and reducde SQL queries. I guess there is no way to have sql_xquery automatically quote result fields that need quoting. I could probably do select user,concat('"',password,'"'),language from sometable? This could also be a potential issue with variable injections via SQL. Immagine some use sets a password ";var=value" this would lead to this var being overwritten I guess. We are moving towards storing ha1 hashed passwords, so that would solve my issue I guess. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] xavp_params_explode broken comma in value?
Hey! I'm hunting down an issue with xavp_params_explode, maybe somebody has already come adross it and could confirm it exists and maybe know a solution? xavp_params_explode("a=foo;c=hello,world;e=baar", "x"); $xavp(x=>a) is 'foo' but x=>c and x=>e are null Am I right to assume the issue being caused by the comma? Is there a way to allow a comma? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] is_method_f(): cannot parse cseq header in xhttp:request event route?
Hi all I use event_route[xhttp:request] on Kamailio 5.5 Every time a xhttp request is processed I get this log entry: ERROR: textops [textops.c:3541]: is_method_f(): cannot parse cseq header Almost identical config on Kamailio 5.6 does not show this error. Is that something that got fixed in 5.6? I see a change in the documentation, While 5.5 does not state $rm can be accessed, 5.6 states $rm contains the HTTP method. Or do I somehow leak the http request to somewhere I call is_method() on it after terminating the event route? How should the event_route[xhttp:request] properly be terminated? With 'return' or with 'exit'? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Dialog + DMQ: dlg_ontimeout() triggered on wrong node!
Hi Some more testing... It looks like, in REPLY_ROUTE if (is_known_dlg()) { dlg_set_timeout("3"); xlog("L_INFO", "$cfg(route): DEBUG DLG Lifetime $dlg(lifetime)\n"); } indeed does set the lifetime to 3 seconds. Unfortunately this is replicated on the other DMQ node which then again has a 50% chance of wrongfully triggering timeout after 3 seconds instead of what the default is. So no luck in setting a generous default lifetime and then shortening the lifetime on the node handling the case to make sure it is the one triggering the timeout. I had a quick glimpse into the source. As an n00b coder, I think I understand that the dmq message is parsed and then timer inserted or updated on all dmq nodes when a DQM dialog message is received. I fear, this causes this behaviour of the timer expiring on the wrong node. So is this a bug? Shall I report an issue on github? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Dialog + DMQ: dlg_ontimeout() triggered on wrong node!
Hi > Shall I try by setting the default_timeout and then use a timeout_avp > to set that timeout slightly lower AFTER the dialog has started? Or > would this be synced to the other node too? No, this does not work. Tested on our dev platform (Kamailio 5.6) by setting default_timeout to 5 seconds and trying to lower this value to 3 seconds during call to force the timeout being triggered on the node which is handling the call. modparam("dialog", "default_timeout", 5 ) modparam("dialog", "timeout_avp", "$avp(dlgtimeout)") $avp(dlgtimeout) = 3; dlg_manage(); => Still timing out after 5 seconds, about half the attempts on wrong node. dlg_manage(); $avp(dlgtimeout) = 3; => Still timing out after 5 seconds, same issue. $dlg_ctx(default_timeout) = 3 => Invalid! event_route[dialog:start] { $avp(dlgtimeout) = 3 } => Still timing out after 5 seconds, same issue. Ping Olle and Alex. Any idea how to fix this issue? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Dialog + DMQ: dlg_ontimeout() triggered on wrong node!
Hello World! Kamailio 5.5 in use. I wonder, how I could prevent this issue. modparam("dialog", "send_bye", 1) modparam("dialog", "default_timeout", 21600) in the corresponding route: $dlg_ctx(timeout_route) = "DIALOG_TIMEOUT"; dlg_manage(); Dialog starts on Node01 and it's variables, status and timer are DMQ synced to Node02 As both nodes have the same information, I guess both arm the timeout trigger and sometimes the wrong node is more trigger friendly. If dlg_ontimeout() is triggered on Node02 then: * No Bye is send, as Node02 is not handling that Dialog. * Dialog is removed from Memory on Node02 and state synced back to Node01 * Dialog is removed from Memory on Node01 too, but NOT from database [*1] * Dialog CDR is never commited on Node01 * Call is never sent to timeout_route And subsequent in dialog messages on Node01 result in: dlg_onroute(): unable to find dialog Did I misconfigure something? Is there a way to make sure the timer is NOT triggered on the node not handling the dialogue? Shall I try by setting the default_timeout and then use a timeout_avp to set that timeout slightly lower AFTER the dialog has started? Or would this be synced to the other node too? I found out, session timer changes are not synced after an initial timer was synced, so you can not extend the session timer after setting a initial timeout. So maybe this is also true for dialog timeout? [*1] this also explains why upon restarting kamailio, the dialog suddenly is back and after timing out again, a CDR is then written with a way too long duration. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Dispatcher list reloading itself from file?!?
Hi List I wanted to take one of our cores down gracefully by not destroy running dialogues to be able to implement a config change on Kamailio 5.5 For this I did: kamctl dispatcher.remove ID SIP-URI, for every IC This worked fine, Kamailio is instructed to reply 503 on out of dialogue traffic from unknown endpoints causing the endpoints to re-route traffic to the other core, eventually making it possible to stop and restart Kamailio without harm. dialog count was steadily decreasing, until after about 10 minutes after removing the dispatcher URI's it started to increase again. kamctl dispatcher.list shows me, all dispatcher URI I removed are back! There is no ds_reload() being executed by calls. In the module description, I find no hint, that the dispatcher config is being reloaded from file in some interval or so. What could be the cause of my removed dispatcher suddenly being back? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to filter out xhttp request in event_route[siptrace:msg]
Hi James > I used to have this problem, but I don't have it right now. I've never > fixed the problem, but I'm on 5.6.1 now and it doesn't happen. > What version have you got? 5.5 on production and 5.6 / 5.7 on development platform Thank you for that hint. Checking if that also occurs on 5.6 -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Kamailio 5.7 still segfaulting on TLS with Ubuntu Jammy
Hi Antony > Are you connecting to mysql? > > We had similar sounding issues and adding this to kamailio.cfg made a > difference > modparam( "db_mysql", "opt_ssl_mode", 1 ) I am using MySQL, but I didn't deliberately configure it to use SSL. I'm using TLS for SIP client registration on port 5061. So I was hunting the issue down that rabbit hole. https://www.kamailio.org/docs/modules/devel/modules/db_mysql.html#db_mysql.p.opt_ssl_mode I try to force disable SSL for mysql off by setting this to 1. Restarted, let's observe for a hour or so. Usually the crashes occur after restarting. At the moment all 4 dev registrars have restarted without crashing in the first 2 or so minute. So this somehow looks promising! -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Kamailio 5.7 still segfaulting on TLS with Ubuntu Jammy
Hi Gang I just updated our dev plattform from 5.6 to 5.7 5.5 was working fine with TLS under Ubuntu Focal. 5.6 under Jammy started to dump cores. 5.7 still shows the same behaviour, usually shortly after a restart. Oct 20 09:45:01 dev-cpereg01 kamailio[11925]: CRITICAL: [core/mem/q_malloc.c:519]: qm_free(): BUG: freeing already freed pointer (0x7f1bb0dd4bd8), called from tls: tls_init.c: ser_free(405), first free tls: tls_init.c: ser_free(405) - ignoring Oct 20 09:45:11 dev-cpereg01 kamailio[11905]: ALERT: [main.c:776]: handle_sigs(): child process 11924 exited by a signal 11 Oct 20 09:45:11 dev-cpereg01 kamailio[11905]: ALERT: [main.c:779]: handle_sigs(): core was generated Could anyone point me the correct direction on how to fix this issue? Am I the only one seeing this issue? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: RTP traffic through kamailio
Hi > When I make a call through two Sipp devices ,kamailio in between as > sip server , the rtp traffic is flowing directly through the > endpoints instead of flowing through kamailio . > > Is this how it works? Else , am I committing any mistake? Yes, this is how it works. Kamailio does SIP signalling, not RTP. You could use rtpengine as an RTP proxy on the same or another machine and use the kamailio rtpengine module manipulate SDP so traffic flows via rtpengine and to tell rtpengine how to route rtp traffic. https://github.com/sipwise/rtpengine https://www.kamailio.org/docs/modules/stable/modules/rtpengine.html -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] insert_dlg_timer(): Trying to insert a bogus dlg
Hi Team Could anyone point me in the direction where I could find out more what's going wrong and what could be the cause of messages like: Sep 22 07:32:29 dev-core02 kamailio[915066]: CRITICAL: dialog [dlg_timer.c:129]: insert_dlg_timer(): Trying to insert a bogus dlg tl=0x7f9617d967b0 tl->next=0x7f9618e11198 tl->prev=0x7f9617e20548 Sep 22 07:32:29 dev-core02 kamailio[915066]: CRITICAL: dialog [dlg_dmq.c:314]: dlg_dmq_handle_msg(): Unable to insert dlg timer 0x7f9617d96750 [1598:12168] Are the numbers in brackets [hash_id:hash_entry] ? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Dialog: bogus event 2 in state 3
Hi Team I'm still hunting dialog errors which cause my dialog counters to divert and stick around, basically exploding in my face now and then. I suppose they are DMQ related (maybe packet loss, maybe retransmissions, maybe generic overloading of the virtualized kamailio instances) causing issues with inserting dialog timers on the peer etc. So for the moment I'm running only one instance, no DMQ peer. What I still occasionally see are messages: INVITE]dialog [dlg_hash.c:1182]: next_state_dlg(): bogus event 2 in state 3 for dlg 0x7ff906294be8 [2482:872] with clid 'A8459C74@7f33ff47' and tags '7f33ff47+1+7d820120+89494caf' '3904288054-1882699775' I found an ancient post, confirming this to be an open bug in Kamailio 1.4 and race condition between the 200 OK reply to an INVITE and the ACK confirming the 200 OK. Someone attempted to backport a fix for opensips to kamailio. Indeed, I see this message occur occasionally after managing the 200 OK reply and routing the ACK. Does anyone know, if this is still a open bug with Kamailio 5.5? Or what else could be the cause of this message? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Orphan Dialog Vars: Probable cause found!
Hi List I wonder if some of the devs could look at the dialog code and maybe confirm my observation of this supposed Bug in Kamailio 5.6 Situation: Two Kamailio, dialog counters synced via DMQ and each node using a local DB as dialog backend. Goal is to count channel usage per customer. modparam("dialog", "db_mode", 1 ) modparam("dialog", "enable_dmq", 1) modparam("dialog", "h_id_start", -1) # Use server_id modparam("dialog", "h_id_step", 2) modparam("dialog", "profiles_with_value", "custcallcounter") If 'JohnDoe' is involved in a call, I do: set_dlg_profile("custcallcounter","JohnDoe"); To check how many calls are busy by JohnDoe I do: get_profile_size("custcallcounter","JohnDoe","$var(channel_use)"); Picture this situation: JohnDoe is initiating a first call via Node1: Node1 created the dialogue and variables, writes them to the database and replicates the dialog vars to Node2 => IN MEMORY Nothing about the running dialog is being written to the Database on Node2, but get_profile_size returns the count on Node2. So while the first call aka dialog is running via Node1, JohnDoe is initiating a second call, this time via Node2. Node2 creates the dialog and writes this to the database. Then the profile with Name 'JohnDoe' is INCREASED on Node2. This is when I suddenly find the dialog_vars on the Node2 database containing information about the dialog started on Node1. So I guess writing to a dialog counter triggers the dialog_vars being written to the Database. When JohnDoe is ending it's first call, then the dialog and dialog_vars are cleaned out of the database on Node1, but NOT on Node2 What I fear happens next: They dialog_vars remaining on the Database of Node 2 accumulate more and more, making the database slower. When a call happens to re use the same hash id and entry, things start going really badly. Could I be right? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Skip/discard branch in branch route?
Hi Yuriy This looks promising. I was able to set $ru and then add branches to only send the calls from the registrar with a valid socket. But I fear: append_branch($(ulc(aor=>addr)[$var(i)])) is not correct in NAT situation. aor=>received is probably the one to use, but does not contain the username part. And also I probably lost that full NAT automation. I also observed that the sending socket is not preserved. In my case I have to tcp sockets: 8080 where I run the xhttp api, not used for sip, and 5060. The outgoing call originates from 8080. So it is definitely not reusing the existing TCP connection. Do I have to set $fs? But how do I set this only for a specific branch? Assume I have multiple contacts, some using TCP other UDP or TLS. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Skip/discard branch in branch route?
Hi Yuriy > Then for the first entry, you can set $ru and $du variables and it > will become the main branch > For the other do append_branch and set parameters of the branch[-1] > accordingly. > So you can control branch creation instead of automatically doing it > by Kamailio and filter all needed. Thank you, I think you pointed me in the right direction. So going to replace: if (lookup("location", "$var(lookupuri)")) { by if (reg_fetch_contacts("location", "$var(lookupuri)", "aor")) { Then iterate the contacts and only add the ones having a socket set. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Skip/discard branch in branch route?
> $branch(uri) > $(branch(uri)[0]) Nah, just tested, both contain the same branch... I discovered $branch(send_socket)... Still not understanding, why I clearly have 4 contacts registerd on the AOR but only finding 3 of them when looping through the branches but when route(RELAY) is called, all 4 get traffic. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Skip/discard branch in branch route?
Hi Yuriy > Main request is the first branch. > So consider changed $ru after lookup as the first (0) branch. > Other branches will be appended as addition. Not sure if I understood that correctly... while in request route... the four URI of the branches are: $branch(uri) $(branch(uri)[0]) $(branch(uri)[1]) $(branch(uri)[2]) and $branch(count) is 3 because there are 3 'additional' branches? How do I geht the sockets of those four branches? $branch(uri) => $(ulc(aor=>socket)[0]) $(branch(uri)[0]) => $(ulc(aor=>socket)[1]) and so on? Indexes offset by 1? And, what happens if I set: $branch(uri) = $null will $(branch(uri)[0]) become $branch(uri) and eveything shift one index down? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Skip/discard branch in branch route?
Hi Yuriy > You also can filter it in the request route and not create branch wich > doesn't belong this server ( you can achieve that by verifying ucl > variable details), or making it UDP branch being forwarded to proper > server which handles the particular connection. I have started trying to solve this in request route. I'm still truggling on how to distinguish local and non local registrations. I have 4 CPE registered to the same AOR. kamclt ul show [AOR] does show they are registered. 3 on the local registrar (with a socket) and one with socket [not set]. If I repeat on the other registrar I get matching information. One with a socket, the other three are [not set]. So trying to understand the hard way, what happens: $var(i)=0; while($var(i)<=$branch(count)) { $var(socket) = $(ulc(aor=>socket)[$var(i)]); xlog("L_INFO", "$cfg(route): DEBUG BEFORE: IDX: $var(i) TOTAL: $branch(count) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n"); $var(i) = $var(i) + 1; } $var(i)=0; while($var(i)<=$branch(count)) { $var(socket) = $(ulc(aor=>socket)[$var(i)]); xlog("L_INFO", "$cfg(route): DEBUG REMOVE: IDX: $var(i) TOTAL: $branch(count) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n"); if ($var(socket) == 0) { xlog("L_INFO", "$cfg(route): Dropping Branch IDX $var(i) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n"); $(branch(uri)[$var(i)]) = $null; } else { $var(i) = $var(i) + 1; # do NOT increment index as the branches got renumbered. } } $var(i)=0; while($var(i)<=$branch(count)) { $var(socket) = $(ulc(aor=>socket)[$var(i)]); xlog("L_INFO", "$cfg(route): DEBUG AFTER: IDX: $var(i) TOTAL: $branch(count) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n"); $var(i) = $var(i) + 1; } What I did not yet understand. $branch(count) is 3 ! So, does kamailio only consider the 3 registrations WITH a socket? Or is this the index starting with 0, thus 4 contacts? When I do $(branch(uri)[$var(i)]) = $null; then $branch(count) is decremented. I suppose because the next contact takes that index, this is why I do NOT increment $var(i). But I then get no $(branch(uri)[$var(i)]) on the highest index, suggesting that I only see 3 contacts, not all 4 of them. Indeed, my 'BEFORE' loop did not output the contact registered on the other registrar. So WHY is there still the INVITE being sent to the fourth, non local contact? => Confused! -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Skip/discard branch in branch route?
Hi https://www.kamailio.org/wiki/cookbooks/devel/pseudovariables#branch_name_-_branch_attributes Assigning $null to uri attribute will drop the branch, for the rest of attributes will just set the value to null. I fear this does not work within branch_route if ($var(socket) == 0) { if ($avp(debug) > 0) { xlog("L_INFO", "$cfg(route): $(branch(uri)[$T_branch_idx]) via Socket: $var(socket) is NOT LOCAL to this Registrar - dropping!\n"); } $(branch(uri)[$T_branch_idx]) = $null; } Result: * Call is still branched to CPE * $(branch(uri)[$T_branch_idx]) is null on all subsequent branches after the first one. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Skip/discard branch in branch route?
Hi all Is there a way to skip a branch in branch route? Situation: Two registrar server with DMQ synced location database. CPE register via TCP or TLS. To properly work, message have to be sent over the existing TCP connection. Multiple CPE register to one AOR. CPE1 and CPE2 register to Registrar 1 CPE3 registers to Registrar 2 On Registrar 1 there is an established TCP connection to CPE1 and CPE2 but not to CPE3. Within the Branch Route to the CPE I can check if there is a TCP as the Branch Route is executed for every contact in that AOR: branch_route[BR_TO_CPE] { [...] $var(reg_contact_addr) = $(ulc(aor=>addr)[$T_branch_idx]{uri.host}); $var(socket) = $(ulc(aor=>socket)[$T_branch_idx]); if ($var(socket) == 0) { xlog("L_ERROR", "$cfg(route): No Socket for: $var(reg_contact_addr)"); } [...] } This log an error if the socket is not present on the local registrar. But is there a way to tell kamailio to skip/discard that contact? My intention is to parallel branch from the core to both registrars, that way all contacts would still get the call but via established TCP socket (and in case of UDP and NAT via correct know ip for ALG port-forwarding). -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Finding a way to gracefully restart kamailio with dialog module enabled and DMQ sync
Hi Daniel PS: Kamailio 5.5 in use so not on the edge yet. Thank you for helping regarding that issue and maybe hinting how it could be improved. > what is the purpose of dmq replication? To limit active calls? Exactly. Our subscriptions contain a certain number of 'channels'. If they are used the customer is busy. So I use profile counters to track the used channel count per customer. > What exactly happens? What means "corrupts" them? What data/fields > become corrupted? It looks like the/some dialogues just don't exist any more after a reload. Or they exist but are not being found. Observed issues: * dialogue variables that were populated before the restart do not exist any more. * When a call ends, the corresponding dialogue is not found, so the dialogue modules is unable to end the CDR - but when the dialogue timeout hits, the CDR is then written with duration = timeout value which is way longer than the actual duration. * profile counter for dialogues that were not found when the call ended are still present so 'POTS' customers with 'one' channel stay 'busy' until the dialogue timeout hits. * Database accumulates data from dialogues that do not exist anymore. Specific error I see, when a dialogue should be ended and kamailio can't find it anymore after a restart is: ERROR: dialog [dlg_dmq.c:289]: dlg_dmq_handle_msg(): dialog [838:15539] not found If you could help, I could try to dig out the full log of a dialogue experiencing that issue. Dialog Parameters used: modparam("dialog", "send_bye", 1) modparam("dialog", "timer_procs", 0) modparam("dialog", "db_mode", 1 ) modparam("dialog", "db_url", DBLOCAL ) modparam("dialog", "dlg_flag", FLT_DLG ) modparam("dialog", "dlg_match_mode", 1) modparam("dialog", "dlg_extra_hdrs", "Hint: Initiated by IMP Core Proxy\r\n") modparam("dialog", "hash_size", 4096 ) # Do not send any keepalive messages in dialog modparam("dialog", "ka_timer", 0) modparam("dialog", "ka_interval", 30 ) modparam("dialog", "enable_stats", 1 ) modparam("dialog", "detect_spirals", 1 ) modparam("dialog", "bridge_controller", "sip:control...@imp.ch") modparam("dialog", "default_timeout", 43200 ) modparam("dialog", "timeout_avp", "$avp(dlgtimeout)") # Needs to be same as sst timeout! modparam("dialog", "profiles_no_value", "callcounter;total_sbcincoming"); modparam("dialog", "profiles_with_value", "dispatchout;sbcincoming;trunkincoming;cpeincoming;safariincoming;custprofilecounter;legcounter"); modparam("dialog", "enable_dmq", 1) modparam("dialog", "h_id_start", -1) # Use server_id modparam("dialog", "h_id_step", 2) Each node uses a local database (defined as DBLOCAL), they don't access our common 'remote' database where for example customer authentication information is provided. > Regarding reject of the calls for cooling down the instance for > restart, check if the 305 Use Proxy is supported by origin of the > calls, it might be more suitable. Our registrar nodes run kamailio too, so implementing that would be an option. Regarding our IC to other TSP and Carriers, I would have to check, at the moment, they are all connected via a commercial vendor SBC so if that SBC can handle 305 on Invites (it can in register) that would work. But one of our goals is to eventually also get rid of that SBC which has some limitations and a not very advantageous 'feature' licensing model in favour of open source and flexiblity by using Kamailion and rtpengine for that task. But then we would have to check with every IC we have. I know that at the moment 503 is understood by all our switches connected to kamailio and also our registrars handle 503 as a failure to the other node in the dispatcher list. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Finding a way to gracefully restart kamailio with dialog module enabled and DMQ sync
Hi Gang We are still having massive issues on how to safely reload kamailio after config changes when using the dialog module and DMQ. If there are active dialogues, kamailio corrupts them on a restart even when using MySQL as dialog backend. As we use two core nodes for redundancy, I am looking for a way to gracefully restart kamailio. I am considering adding some key in a hash table or anything else I can reload on runtime to indicate to kamailio not to accept any new calls (effectively rejecting Invites without To-Tag with 503 causing the registrar or IC peer to hopefully resend the invite to the other node). Then wait, until no more dialogues are active, so kamailio can safely be restarted. My Issue now: How can I find out, one specific node does not have any active dialogues? 'kamcmd dlg.stats_active' returns the count of all DMQ synced nodes, not of the local one. And suggestions or any other ideas how I can 'reload' the kamailio config without disrupting active dialogues? My last resort would be to look into the database: modparam("dialog", "h_id_start", -1) # Use server_id modparam("dialog", "h_id_step", 2) So odd/even H_ID should tell me the number per node. But I see a lot of orphan dialogues hanging around in the database not being cleaned so I guess that will not be reliable at all. Yes, I know I will get the question: 'Why do you need to restart kamailio that often'. We have started production on our kamailio based TSP platform. And of course, despite a LOT of testing beforehand, there is always some issue that pops up. At the moment, I have to implement a config change about once or twice a week to fix some new minor issues. I hope, somewhen in the future we will hopefully have a stable config which will last for several months, but at the moment this is the situation. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Dialog DMQ state after restart
Hi Alex > If profile membership is synchronised, does that mean it is possible > to get a count of dialogs in a given profile on any node? Correct. I'm using this to implement a channel limit per trunk or per customer on two dialog DMQ synced nodes. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] http_client using JWT?
Hi The http_client module support the somehow old fashioned way to submit credentials as part of the URL. Our 'held' server developer would love to use either JWT or a Bearer Token in the Auth-Header or a 'cookie-jar' to authenticate the requests. Is this somehow possible? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to prevent run-away dialogues?
Hi team Is there any way to get correct CDRS when using the dialog module and restarting kamailio? I have configured the dialog timeout to be 12 hours. But today while doing IC billing, we stumbled over a call that lasted for a week. Probably due to a stale entry in the database dialogue tables left over after a kamailio restart. Looking at the logs there definitely was something wrong: dialog [dlg_req_within.c:211]: bye_reply_cb(): inconsistent dlg timer data on dlg 0x7f153f503778 [956:2612] with clid '35BEFD13@7f33ff47' and tags '7f33ff47+1+75300082+dde85140' '3891401256-2097511021' acc [acc_cdr.c:229]: db_write_cdr(): fallback to dlg_only search because of message doesn't exist. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: kamcmd ul.db_contacts how to specify table name?
> Kamcmd complains the table is not found. What would be the correct > syntax to provide the table name? Sigh, once more, answering myself: db_mode=3 only! -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] kamcmd ul.db_contacts how to specify table name?
Good morning. I'm trying to get the number of registered contacts with kamcmd ul.db_contacts. The table has the default name 'location'. But no matter what I try: kamcmd ul.db_contacts location kamcmd ul.db_contacts s:location kamcmd ul.db_contacts database.location kamcmd ul.db_contacts s:database.location Kamcmd complains the table is not found. What would be the correct syntax to provide the table name? Attempted with Kamailio 5.5 and 5.6 -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Upgrade to 5.6.4 => [core/mem/q_malloc.c:519]: qm_free(): BUG: freeing already freed pointer
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/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/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/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/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/pass_fd.c:277]: receive_fd(): EOF on 34 May 5 14:58:46 dev-cpereg01 kamailio[36143]: ALERT: [main.c:774]: handle_sigs(): child process 36161 exited by a signal 11 May 5 14:58:46 dev-cpereg01 kamailio[36143]: ALERT: [main.c:777]: handle_sigs(): core was generated May 5 14:58:46 dev-cpereg01 kamailio[36143]: INFO: [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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: rtpengine module: sdp offer in message reply, ip protocol version not passed to rtpengine?
> Invite+SDP from B to A > > It looks like this works as expected. A SDP c= line is created > containing an ipv6 address. Sorry, I was mistaking. No it is not :-/ So I guess I have to look at the location or RURI-Host to determine the IP protocol and tell rtpengine what to use. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: rtpengine module: Actions caused by rtpengine_manage() on reply-codes?
Hi Ihor if (msg->first_line.type == SIP_REPLY) { if (msg->first_line.u.reply.statuscode>=300) return rtpengine_delete(msg, flags); Thanks for the hint. I'll do the same in manage_reply but not engage rtpengine_manage() on a status code 488 to allow fall-back on a failed re-negotiation. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Dialog DMQ Sync not updating expire timer Re: How to log expiring dialogue?)
Short update while doing more testing, I guess I figured out the cause. We have two core nodes using the dialog module and: modparam("dialog", "enable_dmq", 1) If the call is handled on core1 and the session timer is increased, indeed there is no hint of the dialogue expiring. But now I had a look on core2 and this is where the call is expiring. So I guess the refreshing of the session timer via AVP is not DMQ synced to the other node? Should I replace the AVP by a DLG var? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] rtpengine module: Actions caused by rtpengine_manage() on reply-codes?
Hi all I wonder, if there is a documentation on what action is performed by rtpengine_manage() on which kind reply. Am I right, that rtpengine_manage(), on any 4XX reply causes a delete? So if there is a re-invite (for example to switch to T.38) and the other party replies with 488 which in turn is passed through rtpengine_manage() the existing RTP stream is deleted from rtpengine instead of being left running with the previously agreed codec? Has anyone already figured out a list of what reply codes should be exempt from calling rtpengine_manage()? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to log expiring dialogue?
Hi alle I think I have an issue with the dialogue and session timer module with Kamailio 5.4 I sync the Session Expire Timer with the dialogue timeout via a common AVP. When I check a dialogue via kamcmd dlg.list start_ts: 1682066352 init_ts: 1682066346 end_ts: 0 timeout: 1682066952 lifetime: 600 Timeout is increased on the first session refreshing re-invite, as expected (in this case after 300 seconds). But it looks like the dialogue just disappears (from kamcmd dlg.list, not from the backing database) when the lifetime ist reached, leaving an orphan database entry. I would like to digg deeper into this. Is there a way to log more details from the dialogue module like when it triggers dialogue expiry? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to correctly use the SST module?
Hi I still have odd behaviour with the SST module: modparam("sst", "min_se", 300) if (sstCheckMin("1")) { xlog("L_ERR", "$cfg(route) Session Timer too small\n"); exit; } setflag(FLT_DLG); # set the dialog flag setflag(FLT_SST); # Set the sst flag if(is_present_hf("Session-Expires")) { $avp(dlgtimeout) = $(hdr(Session-Expires){s.int}); } On an INVITE containing those header: Session-Expires: 3600;refresher=uac Min-SE: 600 Supported: 100rel,timer Expires: 330 Now Kamailio replies: SIP/2.0 422 Session Timer Too Small Min-SE: 300 What am I doing wrong? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Dialog timeout not update from session-timer (was: dlg_onroute(): unable to find dialog for INVITE with route param)
Hi Again Narrowing down the issue with dialogues disappearing. It looks like something is not working as I expect with the session timers. modparam("sst", "enable_stats", 0) modparam("sst", "min_se", 1800) modparam("sst", "sst_flag", 6) modparam("sst", "timeout_avp", "$avp(dlgtimeout)") modparam("dialog", "timeout_avp", "$avp(dlgtimeout)") modparam("dialog", "send_bye", 1) modparam("dialog", "dlg_match_mode", 1) modparam("dialog", "ka_timer", 0) modparam("dialog", "ka_interval", 30 ) modparam("dialog", "enable_stats", 1 ) modparam("dialog", "detect_spirals", 1 ) modparam("dialog", "default_timeout", 43200 ) request_route { # Initial Invite... if ($rm == "INVITE" && !has_totag()) { if(is_present_hf("Session-Expires")) { $avp(dlgtimeout) = $(hdr(Session-Expires){s.int}); } } # handle requests within SIP dialogs if (has_totag()) { route(WITHINDLG); exit; } } route[WITHINDLG] { if (loose_route()) { setflag(6); dlg_manage(); route(RELAY); exit; } } From my understanding of the docs, this should extend the session timer on every re-invite, but that does not seem to happen. Maybe I'm confused by the flags. The sst module shows examples where both flags are used. modparam("dialog", "dlg_flag", 5) modparam("sst", "sst_flag", 6) But when reading the docs to the dialog modules, I understood that the dlg_flag is purely optional and does not need to be set when using dlg_manage as I do. Maybe it's not optional when using dialog AND sst together? Also I wonder why no BYE is being sent, when the dialogue times out, despite being configured that way. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: dlg_onroute(): unable to find dialog for INVITE with route param
Hi Again > Any hint what could cause Kamailio not to find the corresponding > dialogue on this re-invite? I went through syslog and found out, that in between the two re-invites some stuff got reloaded by a cronjob: KAMCMD="/usr/sbin/kamcmd" $KAMCMD dispatcher.reload $KAMCMD htable.reload spithash $KAMCMD mtree.reload rules $KAMCMD mtree.reload prefix $KAMCMD mtree.reload antispoof Could this cause kamailio to forget about running dialogues? That could also explain, why I keep seeing the dialogue tables filling up with stale dialogues over time. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] dlg_onroute(): unable to find dialog for INVITE with route param
Happy Eastern Kamailio 5.4 used. On dialogues calls, I noticed this happening on the second re-invite to refresh the session from the B side. dlg_onroute(): unable to find dialog for INVITE with route param 'df9.da75' [2557:22445] and call-id '14148a68-f1b2-485d-b5a2-f9dd7773d2c0' The did df9.da75 is identical to the one in the route-header on the first re-invite from the B side, before this one. No CDR was (yet) generated, and the dialogues is still present and on-going according to the database: CallID [14148a68-f1b2-485d-b5a2-f9dd7773d2c0] H-Entry: 2557 H-ID: 22445 But most probably not in memory as kamcmd dlg.stat_active shows zero (this is on a development node, so no other calls running). There are no sip messages that end the call in between those two re-invites. I see no session timeouts or similar in the logs. Any hint what could cause Kamailio not to find the corresponding dialogue on this re-invite? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to check, if call is already handled by rtpengine module?
Hi Running Kamailio Registrar Node + rtpengine without dialog module, only TRX module. Situation: Some customer are in ranges to which RTP can directly be routed, some are not. So rtpengine shall be engaged only when backhauling of the rtp stream is required. On a message from a CPE, this is done by checking $si and on a message to the CPE by checking $(ulc(aor=>addr)[$T_branch_idx]{uri.host}); On a BYE, rtpengine_delete() is called no matter if RTP was backhauled or not. If rtpengine does not find the call to delete, no harm happens. But now I struggle with Session Refresh Re-Invites TO the CPE as they are routed very early on and do not pass the whole location lookup stuff, therefore I have no access to the aor=>addr to determine if the destination needs backhauling or not. So the obvious solution which came to my mind is to call rtpengine_query() and see if it is finding the call and if so, call rtpengine_manage() to keep backhauling traffic on the Re-Invites refrreshing the session. Unfortunately, I found no way to check if rtpengine_query finds the call. Did I miss something? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to get top-most outbound via branch attribute from branched call?
I guess I figured it out... don't use via-branch=auto, but via-branch=auto-next then it works by magic :-) -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to get top-most outbound via branch attribute from branched call?
Hi all For rtpengine to correctly distinguish branched calls, the top-most via branch= parameter should be passed to it. I have attempted to use $via0 but that does not yet exist in Kamailio 5.4 So I did try to read $hdr(Via) which I guess returns an array and then access: but this returns the inbound via, not the one generated on the branched call. How can this be accomplished with kamailio 5.4? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Route: comma separated HOP list
> It looks like kamailio fails to parse them and correctly route for > example an ACK to a 200 OK. Should have looked better It's not the Route header causing the issue. Cisco-SPA112 with most recent Firmware (EOL, no more bugfixes). Fails to parse IPv6 Addresses in the Contact Header and considers the number between the the first two colon, to be the Port, ignoring the remaining part of the IP address, completely garbling the RURI of the ACKS. *sigh* I guess we will have to tell our customers, that those devices can not be used anymore when we allow any customer to communicate via SIP IPv6. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Route: comma separated HOP list
Hi List Cisco-SPA112 does reply to an invite containing Record-Route header with one Route: Header containing a comma separated list of those hops. It looks like kamailio fails to parse them and correctly route for example an ACK to a 200 OK. Is this a known issue? Is there a solution? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: json RPC syntax
Hi Volker > your comments were helpful, now I am 1 step further and reached the > next challenge: > https://lists.kamailio.org/mailman3/hyperkitty/list/sr-users@lists.kamailio.org/thread/JECBJH3OFCFQKHNURCPCBOX3S7SUX4XE/ Did you enable one of the DB modes? /* enable DB persistency for location entries */ modparam("usrloc", "db_url", DBLOCAL) modparam("usrloc", "db_mode", 2) modparam("usrloc", "use_domain", 0) RPC functions are restricted in the reply size. I found by try and error, that this limit is at about 1MB and I found no way to increase that limit. We therefore took another approach and started building our own API using the jansson module to directly access the database and only return the information we are (or our customer service using our diagnosis service) is interested in. Here the snippet with might be interesting for you. event_route[xhttp:request] { route(DEBUGINIT); if ($avp(debug) > 0) { xlog("L_INFO", "$cfg(route): XHTTP Request to URI: $hu Port: $Rp BODY: $rb\n"); } if ($Rp != 8080) { xhttp_reply("403", "Forbidden", "text/html", "Talk SIP to me dude!"); exit; } if ($hu =~ "^/RPC") { ### KAMAILIO JSONRCP passthrough jsonrpc_dispatch(); } else if ($hu =~ "^/API") { ### CUSTOM API $var(json_reply) = "{}"; jansson_get("method","$rb","$var(method)"); jansson_get("id","$rb","$var(id)"); jansson_set("string","jsonrpc","2.0","$var(json_reply)"); jansson_set("string","id","$var(id)","$var(json_reply)"); jansson_set("obj","result","{}","$var(json_reply)"); [...] } else if ($var(method) == "location.lookup.by_aor") { # Registration Lookup by AoR jansson_get("params[0]","$rb","$var(aor)"); $var(query) = "SELECT username,contact,last_modified,expires,callid,user_agent from location" " where username = '" + $var(aor) + "'"; $var(query_result) = sql_query("localacc", "$var(query)","sql_res"); if($dbr(sql_res=>rows)>0) { $var(i)=0; $var(aor_a) = '[]'; while($var(i)<$dbr(sql_res=>rows)) { $var(aor_o) = '{}'; jansson_set("string","username", "$dbr(sql_res=>[$var(i),0])","$var(aor_o)"); jansson_set("string","contact", "$dbr(sql_res=>[$var(i),1])","$var(aor_o)"); jansson_set("string","last_modified","$dbr(sql_res=>[$var(i),2])","$var(aor_o)"); jansson_set("string","expires", "$dbr(sql_res=>[$var(i),3])","$var(aor_o)"); jansson_set("string","callid", "$dbr(sql_res=>[$var(i),4])","$var(aor_o)"); jansson_set("string","user_agent", "$dbr(sql_res=>[$var(i),5])","$var(aor_o)"); jansson_append("obj","","$var(aor_o)","$var(aor_a)"); $var(i) = $var(i) + 1; } jansson_set("array","result","$var(aor_a)","$var(json_reply)"); sql_result_free("sql_res"); } else { jansson_set("string","result.error","No entries","$var(json_reply)"); sql_result_free("sql_res"); } } else if ($var(method) == "location.list_all") { [...] } else { jansson_set("string","result.error","Unknown api call","$var(json_reply)"); } ### SEND REPLY if ($avp(debug) > 0) { xlog("L_INFO", "$cfg(route): XHTTP Request to URI: $hu Method: $var(method) OK\n"); } xhttp_reply("200", "OK", "application/json", "$var(json_reply)"); } else { if ($avp(debug) > 0) { xlog("L_INFO", "$cfg(route): XHTTP Request to URI: $hu NOT FOUND\n"); } xhttp_reply("404", "Not found", "", ""); } return; } -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Calling uac_replace multiple times?
Hey all I have started using the uac module to be able to mirror username changes on both legs of a call. But now I found an issue: Assume this situation: Call IC => Customer IC is e164, Customer wants 'local' numbers. IC From: +41991234567 => Customer From: 0991234567 uac_replace_from("sip:" + $avp(from_local) + "@" + $(fu{uri.host})); Customer is absent, after timeout in failure_route call is dispatched to Voicemail Server, which is configured for e164 numbers: uac_replace_from("sip:" + $avp(from_e164) + "@" + $(fu{uri.host})); But then uac complains: replace_uri(): Already called uac_replace for this dialog Why isn't just the most from version kept and used? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: topos breaking route set on hairpin calls?
Hi I might have figured out how to do it... I have to suppress topoligy hiding when not talking to a CPE. branch_route[BR_TO_CORE] { $var(droptopos) = 1; } event_route[topos:msg-outgoing] { if ($var(droptopos) == 1) { drop; } } Trace looks promising, now getting full route set being passed on. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] topos breaking route set on hairpin calls?
Hi Having this situation while elaborating topos in lab. * Kamailio Registration Instance with topos enabled where customers are registered. * Kamailio Core Instance with Dialogue enabled and handling interconnections. Calls in transit from customer to IC work flawlessly, topos does what it should, hides and restores headers needed on the core. But I have run into an issue with customer calling another customer on same registrar instance. To generate a CDR with diaglogue and for decision where to route the calls to (registrar is kept simple and only handles registrations and locations), those calls are also routed via core. This works as long as PRACK is disabled. When PRACK is enabled and CPE B is requesting 100rel, the PRACK send from CPE A has no route set (it was removed by topos). Therefore the PRACK only makes it to the core who then does not know where to route that PRACK. It looks like topos on the REG only restores ONE Route pointing to the core (maybe because the 2nd one pointed to itself?) header when restoring them. I have attempted to spam more record_route() here and there in the config of the core and the registrar to try to force creation of route headers, but failed. Is this a known limitation of using topos? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: PRACK / ACK issue with topos (was: topos vs topoh, any reason for putting a private IP in the Contact header?)
Hi Patrick > Male sure record_route is used in kamailio script. I will double check by outputing a notice to log before calling record_route but I'm quite confident this is the case for invites. Do I need to explicitely call record_route for ACK and PRACK or even for all messages when using topos? Is this where topos hooks in? > Normally it should be used in initial invite. Issue is not only PRACK, but also ACK. I narrowed down the issue to this: topos active: if (has_totag()) { # True if ( t_check_trans() ) { # False route(RELAY); } else { # discard ACK not matching transaction exit; } } I end up discarding ACK and PRACK because they don't match a transaction. topos commented out: if (has_totag()) { # True if ( t_check_trans() ) { # True route(RELAY); } else { # discard ACK not matching transaction exit; } } Ack is routed. Any explanation why topos causes t_check_trans() to return false on ACK and PRACK? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: [core/tcp_main.c:617]: _wbufq_add(): (1244714 bytes): write queue full or timeout
Hi Alex > I'm not familiar with this latter usage of the dialog module. Could > you explain that further? That is not a module. We use the dlg_vars to store a lot of information. I would love if there was a module taking care of symmetric number translations in all messages. I think this is a common task. Consider this situation (intentionally using invalid prefixes) Interconnection uses e164 Numbers. eg: +41661234567 for Switzerland and we use NPRN (number portability routing prefixes) numbers to route ported numbers. Customer uses 'national' notation of same number: 0661234567 Call from Customer: RURI: 0661234567 (this is ported to NPRN 99052) From: 0667776655 Call towards IC therefore has to be: RURI: +4199052661234567 From: +4166776655 So I store the original FROM and RURI in dlg_variables so I can put them back in the appropriate header when passing a RINGING or 200 OK back to the customer. Even more important. When there is a Privacy: ID Header present: I (by OFCOM regulations MUST) replace $fu and $fn with 'Anonymous' towards the customer. And of course also the Contact: Username and possibly remove PAI, PPI or whatever the customer does not need to get. But I might want to send him the Diversion Header to indicate who diverted the call, it it's privacy flag allows it of course. On any subsequent messages, re-invites, whatever else is getting sent to the customer. I have to make sure I don't disclose the calling number by mistake (customer could be logging those on his CPE). So, yes, plenty of header usernames to track and replace for all kind of messages and transactions within a dialogue. > > I noticed, when I restart kamailio after doing config changes, that > > entries kept accumulating with each restart in the 'dialog' and > > 'dialog_vars' tables, never expiring even the next day, when the > > dialog timeout we set to 12 hours should have made sure they got > > expired. > > And you're sure you've got these modparams configured correctly for > this expectation? > > https://kamailio.org/docs/modules/5.6.x/modules/dialog.html#dialog.p.update_period > > https://kamailio.org/docs/modules/5.6.x/modules/dialog.html#dialog.p.db_mode I will give it another try :-) -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: [core/tcp_main.c:617]: _wbufq_add(): (1244714 bytes): write queue full or timeout
Hi Alex > What DMQ sync issues with DB storage have you found? I haven't tried > it myself, but I would imagine a promising approach would be to have > a DMQ peer node whose sole purpose is to sync dialogs to a DB. Have > you tried that? Has it not worked out? We have two 'core' nodes handling everything that is not related to registrar and location tasks. Therefore the dialog module is used to gather cdrs, but to ensure translated numbers are translated the other way on replies and many more. I noticed, when I restart kamailio after doing config changes, that entries kept accumulating with each restart in the 'dialog' and 'dialog_vars' tables, never expiring even the next day, when the dialog timeout we set to 12 hours should have made sure they got expired. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: [core/tcp_main.c:617]: _wbufq_add(): (1244714 bytes): write queue full or timeout
Hi Henning > not sure about your motivation in using this method on a busy > production system. Usually this is not necessary. The motivation is to provide a diagnosis tool to our customer helpdesk. (And also for me as a tech, to for example find long running calls and other stuff I might be interested in). Simplified: Customer Service enters a phone number of a customer and get an output of all settings like call forwarding (obtained from DB by our own API). But also information about registered AOR and their contacts (obtained by ul.dump) and as bonus: Information about active calls of the customer to which this phone number belongs. So I was looking for a way to gather the dialogues involving the phone number or better, AOR in question. dlg.dlg_list needs the call-id, which is not known. dlg.list_match is limited regarding what key can be used. It probably would work with trying to somehow partially matching ruri or furi, but we translate numbers, so that is a bit fuzzy and might return wrong matches or not match if clip-no-screening is used. The most promising would be to use dlg.list and then loop through the variables to find the dialogues associated with the authentication username (equal to the AOR in our case) of the customer to which the dialogue belongs to. As I kept running into DMQ sync issues with storing dialogue information in database, I switched off database support for dialogue. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] [core/tcp_main.c:617]: _wbufq_add(): (1244714 bytes): write queue full or timeout
Hi I'm trying to get dlg.list on a busy system via jsonrpc and xhttp. I already increased: tcp_conn_wq_max=2048 tcp_wq_max=20480 modparam("ctl", "binrpc_max_body_size", 2048) modparam("ctl", "binrpc_struct_max_body_size", 2048) But it looks like the tcp write queue overflows up at shy over 1MB reply no matter what I change. Any ideas what else to toggle? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: Remove all Via Header or create custome Via Header
Hi Alex > Are you talking about the proxy's own Via hop? Exactly... > If your "advertised" address is an IP rather than a DNS name, that > should be mimicked in the Via headers inserted by the proxy. Well the issue is, that we operate two kamailio proxy with DMQ synced states so that if one fails, the other will get the traffic. But that does not work, if the Via contains the IP address of the proxy. So I added a hostname in the advertised config to have a hostname pointing to both ip addresses in the Via. This works towards our IC SBC and towards other kamailio instances we use as registrar, but not towards one of our older 'commercial' voice switches. So towards some 'endpoints' I would need an IP in the Via and towards others I would need a hostname. But I realised, we most probably have to re-consider our idea to run all our kamailio instances in a load-balanced DMQ master-master set-up. A CPE, even when the NAPTR entry or DNS Hostname it registers to points to multiple registrar instances, in the end registers to ONE ip address. In a NAT scenario, this is the IP which the SIP ALG on the customer firewall handles. In a Master-Master registrar scenario, the INVITE towards a CPE might originate from the IP of the registrar that CPE did not register to and therefore the SIP ALG not knowing about and never make it through NAT. PS: Still looking for ideas, how this could be solved. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to make a branch trigger persistent (still being active after failure route is triggered)?
Hi > Try quoting the pseudovariable? > >t_on_branch("$avp(broute_trigger)"); Does this make he variable more 'constant'? :-) I already built a switch/case contruct around it on a REARM_B_TRIGGER route which I now call in every failure route. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to unset_dlg_profile in request_route or react more quickly to CANCEL?
Hi Henning > If the user agent does not reply correctly to the CANCEL, maybe the > user agent should be fixed? As mentioned. I was testing various fail situation, like disconnecting the user agent while in dialog or while in transaction to see what happes. But agreed, that is probably not a situation which occurs often so having the CANCEL to time out and only then removing the dialogue is probably acceptable. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] Re: How to make a branch trigger persistent (still being active after failure route is triggered)?
I tought I had found the solution: request_route { $avp(dispgroup) = 2001; $avp(broute_trigger) = "BR_TO_NATIONAL"; t_on_branch($avp(broute_trigger)); route(DISPATCHCALL); [...] $avp(dispgroup) = 2002; $avp(broute_trigger) = "BR_TO_INT"; t_on_branch($avp(broute_trigger)); route(DISPATCHCALL); } failure_route[DISPATCH_FAILURE] { [...] # Set desired Branch Trigger again to try next # dispatcher in list. t_on_branch($avp(broute_trigger)); route(RELAY); exit; } But no... function t_on_branch: parameter 1 is not constant Any 'tricks'? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
[SR-Users] How to make a branch trigger persistent (still being active after failure route is triggered)?
Hi List Some time ago, during my learning curve with kamailio, I learned that a branch route is where you make modifications to callerId's. So I extensively re-engineered the config to move as much as possible of callerid modification into branch routes. But now I discovered, when a call is dispatched via dispatch group with multiple destinations and one destination fails, therefore the failure route is triggered, the branch route is not being called on the second attempt, thus callerid being in the wrong format. Example: dispatcher.lst As an example, consider having dispatcher group 2001 for national traffic over two dedicated links and Dispatcher group 2002 for international traffic. 2001 sip:192.168.1.1:5060 0 0 name="Carrier1" 2001 sip:192.168.2.1:5060 0 0 name="Carrier1" 2002 sip:192.168.1.3:5060 0 0 name="Carrier2" request_route { # We determine where we want to send the call # and choose dispatch group 2001, the 'national' one. # But there are are other dispatch groups and branch triggers # set this way and routed to DISPATCHCALL $avp(dispgroup) = 2001; t_on_branch("BR_TO_NATIONAL"); route(DISPATCHCALL); } route[DISPATCHCALL] { t_set_fr(12,1500); # Fast Failover t_set_max_lifetime(30,0); t_set_retr(200,800); if (ds_select_dst("$avp(dispgroup)", "6")) { if (ds_is_from_list(-1,0,"$du")) { t_on_failure("DISPATCH_FAILURE"); route(RELAY); } } } branch_route[BR_TO_NATIONAL] { # Here I make sure, all CallerId and Header are correct for the # national Carrier } failure_route[DISPATCH_FAILURE] { if (t_check_status("(5[0-9][0-9])") or (t_branch_timeout() and !t_branch_replied())) { # Try next DS. if (ds_next_dst()) { xlog("L_INFO", " --> retargeting request\n"); t_on_failure("DISPATCH_FAILURE"); route(RELAY); RIGHT HERE! exit; } } # We fail xlog("L_ERROR", "Call Failed\n"); } My issue is not, that if the call is routed after the first path failed (marked with RIGHT HERE!) then the appropriate branch route is not triggered again and the headers are wrong. But I can not set t_on_branch within route[DISPATCHCALL] or route[DISPATCH_FAILURE] because this is called with a different pre-set branch trigger, depending on the target dispatch group. Is there a way to make a branch trigger more persistent? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-le...@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
Re: [SR-Users] ds_is_from_list not matching dispatcher listed with hostname
> What else could cause this not to match? Nevermind... being blind... There was an inactivating #!ifdef around the part matching the dispatcher in question. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] ds_is_from_list not matching dispatcher listed with hostname
Hi On our devevelpment system, we have this dispatcher list: 3200 sip:reg1.dev.example.com:5060 0 0 name="Registrar01"; 3200 sip:reg2.dev.example.com:5060 0 0 name="Registrar02"; The names or course are in the DNS: A, and PTR. ds_is_from_list() returns the groupId 3200 Now I have started building the production system... 3200 sip:reg1.prod.example.com:5060 0 0 name="Registrar01"; 3200 sip:reg2.prod.example.com:5060 0 0 name="Registrar02"; DNS ist set up the same. I have double-checked: Names and IP addresses do resolve as they should. ds_is_from_list() returns nothing. I have also sniffed the connection. The ip addresses in the packets are the ones I expect. modparam("dispatcher", "ds_ping_from", "sip:survivabil...@sip.example.com") pings the machines and is getting answers. What else could cause this not to match? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] kamcmd dlg.list => ERROR: reply too big
Hi List I fear I am loosing dialogues somehow. We have implemented counting concurrent connections from customers by using set_dlg_profile. Sometimes, the concurrent channel count does not decrease, despite the dialog end being detected. Now I suppose I have maybe a dozen concurrent calls running, but kamcmd dlg.list is unable to dump the list. kamcmd dlg.dump_file generates quite a large file. I was running into SHM issues while load-testing and had to increase SHM to 1024 to accommodate all dialogues and vars. I fear this could have caused corrupted dialogues? Dialog Data is replicated via DMQ between two instances which I too care never to restart at the same time. Will completely stop and then restart the two affected instances and clear the dialog and dialog_vars tables to see if this issue is manifesting itself again. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] acc module => account register messages?
Hi Is there a way to get register messages into accounting? This could come in handy while helping figure out if clients were not registered while calls attemted to reach them. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] dialog_vars accumulating in database?
Hi Henning > does it happens during run-time, or maybe after a few restarts of the > server? Normally they should be removed if the dialog ended or > expired. Thank you. I have to observe this more closely. As active development is performed, restarts are performed frequently, even while calls-tests are running. I just wanted to make sure there is not need to specifically clear dialog variables at the end of a dialogue. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] Dialog Module: How to get two different dialogues if a call is looped through kamailo (call forwarding scenario)
Hi Henning Thank you for your help. > Kamailio is not a B2BUA. So, the dialog module will only track the > early dialog and then later update its to a "normal" dialog. After > the end of the dialog the acc module will create the CDR, I think. > Just to list some suggestions: > > - use a B2BUA (obviously) Yes, obviously, but we would love to keep our voice platform simple. We are switching away from a commercial solution supplier which turned out to be very limited in flexibility and unable to solve obvious bugs to an open source solution which we can extend matching our needs. So far very happy with kamailio. > - add some dialog variables to the CDR to track the call forwarding I was thinking about that. I can successfully count the legs of a call with: set_dlg_profile("legcounter","$ci"); get_profile_size("legcounter","$ci","$var(legcounter)"); xlog("L_INFO", "$cfg(route): DIALOGUE $ci Leg Counter: $var(legcounter)\n"); So I am indeed considering the possibility to embedd a CDR in a CDR by adding information from each leg to a coma separated string which I keep appending to a dlg_var for each leg. Then in post-processing of the CDR I could extract that/those embedded CDR and create a propper CDR for each legs. But I am not sure about the lenght restriction of dlg_var and this sound quite adventurous. > - switch to transaction-based forwarding and have another component > to generate CDRs from those records Been there, attempted to catch all situation of call forwarding with for example T.38 re-invites and fallbacks from the far side etc. Yes it is looks somehow possible but extremely complicated to correctly match all transaction and reply acc events. As I also need to count and limit the number of concurrent calls per customer, we switched to dialog. > - of course also the modules could be extended, but this probably > needs a bit more discussions As kamailio is widely used by TSP. I guess I'm not the first facing that requirement. So my hope was that I missed some module or way to accomplish this. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] TM Module, avp not present during handling of ack, prack and cancel?
Hi List If I'm correctly reading the documentation, all avp variables should exist during a transaction until it's final ACK. ACK, PRACK and CANCEL are part of that transaction. But I seem not to be able to access the content of avp during those messages. Strangely during MANAGE_REPLY of the 487 following a cancel, the avp are present so that 487 clearly is part of the transaction. What am I missing? (Yes, I am still working on mirroring al username (phone number) translations and filtering unwanted header to prevent information leakage, any hints welcome if there is a simpler way to achieve this) -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] MANAGE_REPLY: do_action(): bad uri: How to mirror username changes from the invite to all replies?
> $fU,$rU,$tU within MANAGE_REPLY > > I get: do_action(): bad uri Ok, it took me some time to realize, that REPLIES to INVITE do not have an $rU. Still wondering, if there is a more elegant way to achieve this. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] MANAGE_REPLY: do_action(): bad uri: How to mirror username changes from the invite to all replies?
Hey there! Kamailio is being used between CPE (customer) and IC. Towards IC we use e164 numbers Towards customers we use 'localized' numbers and also ensure that Privacy is enforced by setting usernames to 'Anonymous' if Privacy is set to id, remove unwanted header etc. I realized, that I have to apply the same translations to replies and re-invites to make sure, they do not leak unwanted information towards the customer. But when I try to set: onreply_route[MANAGE_REPLY] $fU,$rU,$tU within MANAGE_REPLY I get: do_action(): bad uri Just removing unwanted header works fine it looks as it's only changing the usernames that causes this issue. What would be the proper was to change usernames in replies? Is there any module which would apply the same user translations as done with the invite to all replies and re-invites? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] Need help with multi mtree
Heya I try to use mutli tree mtree to define multiple 'named' prefixes. id(int,auto) tname(string) tprefix(string) tvalue(string) 0:tech:+1:1 0:tech:+9:1 0:cust:+1:1 0:cust:+9:0 Kamailio is not complaining while loading this file, but mtree.summary shows no entries. Any hint on what I may be do wrong? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] How to handle a 301 redirect request from a client?
Salut Patrick > since you want to apply manipulation on the new user received from > 300 response you need to use branch_route for this. thats one of his > purpose. So that is what I attempted... if (t_check_status("(301)|(302)") or (t_branch_timeout() and !t_branch_replied())) { t_on_branch("TEST_BR"); route(IMP_ROUTE_TO_CORE); exit; } branch_route[TEST_BR] { xlog("L_ERR", "$cfg(route): HERE WE ARE\n"); # To verify via logs this was triggered $fU = "+41441234567"; } I still end up with +41441234567 being appended to the From User HF I have set previously for the invite towards the CPE which then replied with 302 For better understanding, this is the situation: We want to use e164 on the 'core' as this is the format we have defined as 'normalized' format and which is also in use on IC to other TSP. Only to/from the customer CPE we translate numbers to from the mostly used national format. Basically replacing +41 with '0' and + with '00' and the other way round. So in this example From user is +41441234567 and location lookup is performed. Then From user is translated to 0441234567 to reflect the national notation and display the callerID in a usual format to the customer. But when I get a 302 from that CPE and need to send the call back on an IC. I want to preserve the original From: username and translate it back to e164. But as I already have set $fU = "0441234567" when I do an additional $fU = "+41441234567" in branch_route, I and up with From: "John Doe" <0441234567+41441234...@sip.example.com>;user=phone as setting $fU is APPENDING. No matter if I do this on a failure route or a branch route. Or did I miss a trick? :-) Would I need to also use branch_route to send the initial call towards the customer CPE and set the 'localized' $fU there? Is this message being dropped and the original one used again when triggering failure_route? Is this how it's supposed to work? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] How to handle a 301 redirect request from a client?
Salut Patrick Thank you for your help. I ended up with this: if (t_check_status("(301)|(302)") or (t_branch_timeout() and !t_branch_replied())) { $avp(destination) = $(T_rpl($ct){tobody.user}); xlog("L_ERR", "$cfg(route): Got: $avp(rstatus) $avp(rtext) towards $T_rpl($ct) => $avp(destination)"); append_hf("IMP-cust-profile-code: $var(cust_profile_code)\r\n"); $var(newai) = ""; append_hf("P-Asserted-Identity: $var(newai)\r\n"); $var(newdi) = ";reason=unknown"; append_hf("IMP-screening: no\r\n" ); append_hf("Diversion: $var(newdi)\r\n"); route(IMP_TRANSLATE_INBOUND); route(IMP_ROUTE_TO_CORE); exit; } It sort of starts working, but I'm not there yet :-) The next issue I am right now bumping into is that I translated some 'write is append' header towards the CPE ($tU and $fU) and now I am translating them again (as if they were sent from the CPE) and writing to them again so I end up with the original destination and new destination concatenated. Is there a way to 'reset' the $tU and $fU after setting them once, so that they can be set again? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] How to handle a 301 redirect request from a client?
Hi Gang > if ( get_redirects("3:1") ) { > t_on_branch("REDIRECT_ADD_DIVERSION"); > t_relay(); Not working quite as expected. This seems to consider the complete URI received from the customer. I am only interested in the 'user' part containing the new target phone number not some bogus domain sent by the customer. Is the 302 reply contact uri or user put in any PV I could access and do some manipulations before sending on (like translating from local notation to e164). So I also attempted to extract the username from $ct only to notice, that $ct contains the value of the INVITE contact header sent to the customer, not of the 302 reply contact header. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] Append (not replace) line to SDP body
Hi Tim > set_body($rb+"\r\na=prime:20", $cT); set_body($rb+"a=prime:20\r\n", $cT); works fine! Thanks a lot! -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] How to handle a 301 redirect request from a client?
Hi Patrick > You can check the uac_redirect module. > > Not sure it handle Diversion header but its a good starting point. Merci! That sounds promising I'll try. The ability to add a 'reason' let's me hope it might create a Diversion header. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] Append (not replace) line to SDP body
Hi Gang Next question. I have some broken CPE which do not set a=ptime despite using 20ms which then causes the call to get rejected in certain destinations, because ptime header is missing. So I would like to match the user-agents in question and add back a=ptime:20 Google searches found an user with the exact same problem almost 10 years ago and Daniel replying that indeed a function to add a body line would be handy. https://www.kamailio.org/docs/modules/devel/modules/textops.html How could this be accomplished? I don't see a add_body_line or other function which does not 'replace' a body line. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] How to handle a 301 redirect request from a client?
Hi Gang We want to allow customers to send a 301 to forward calls to mimik ISDN PARE. The new destination is in the contact user HF. So I guess I could handle this on the t_on_failure route to catch that error, extract the contact user HF, craft an appropriate Diversion header and send the call on. But I wonder, is there maybe a module which handles all of this out of the box? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] Dispatcher Usage and change of $rU
> There’s a typo here: Ignore, I only made that type in the email example. After some more google research I found another user describing a similar issue so I did some testing: ds_select_dst does RESET $rU and $tU but not $fU ds_select_domain does not RESET $rU or $tU. Doing: ds_select_dst("2000","6"); $rU = "0012345"; route(RELAY) setting $rU after calling ds_select_dst solved the issue I have. But I wonder, why this is resetting certain header. This is not clear from the documentation. I also wonder: When should one use ds_select_dst and when ds_select_domain ? Could ds_select_domain be safely used for any situation? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] Dispatcher Usage and change of $rU
Hi Gang I have a observation which I don't understand... Let's assume we have an inbound $rU = 12345 And I want to change $rU outbound to 0012345 Doing: $rU = "0012345"; ds_select_dst("2000"),"6"); route(RELAY) The call is being sent out with unaltered R-URI Username: 12345 Doing: $rU = "0012345"; ds_select_domain("2000", "6"); route(RELAY); The call is being sent out with the intended new R-URI Username: 0012345 Looking at the docs: https://kamailio.org/docs/modules/5.4.x/modules/dispatcher.html#dispatcher.f.ds_select_dst I can not figure out, why I see this difference. -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
Re: [SR-Users] t_on_failure => what variables being reset to which values?
Hi Igor > On which route do you send those variables? Trying to shorten a bit. Example, call is being sent to a customer device and is getting busy, this is sent to an asterisk to play the 'busy' tone. But this is also done with all other kinds of announcements. if t_check_status("(486)|(600)") { # BUSY $avp(announcecode) = "BUSY"; route(DISPATCHMEDIA); exit; } DISPMEDIA contains the ID of a dispatcher group consisting of two sip URI towards our two asterisk media server. Extra Header are the used by asterisk to play the desired announcement in the desired language. route[DISPATCHMEDIA] $avp(dispgroup) = DISPMEDIA; append_hf("IMP-annc: $avp(announcecode)\r\n"); append_hf("IMP-mandate: $avp(mandate)\r\n"); append_hf("IMP-language: $avp(callerlang)\r\n"); if (ds_select_dst("$avp(dispgroup)", "6")) { # we have a list of servers and a selection in $du if ($avp(debug) > 0) { xlog("L_INFO", " --> DISPMEDIA targeting request to $ru to location $du \n"); } # Trigger failure route t_on_failure("DISPATCH_MEDIA_FAILURE"); t_on_reply("DISPMEDIA_MANAGE_REPLY"); route(RELAY); exit; } route(ANNOUNCEREPLY); exit; } See part below commented by where I already 'fixed' it by adding the header again and I also had to set $rU again as this was reset to $rU of orininal incomming call containing a ported number routing prefix, which we strip as one of the first things to get the e164 number. failure_route[DISPATCH_MEDIA_FAILURE] { if (t_is_canceled()) { exit; } if (t_check_status("(500)|(503)") or (t_branch_timeout() and !t_branch_replied())) { if (ds_next_dst()) { # SETTING HEADER AGAIN!?! append_hf("IMP-annc: $avp(announcecode)\r\n"); append_hf("IMP-mandate: $avp(mandate)\r\n"); append_hf("IMP-language: $avp(callerlang)\r\n"); if ($avp(debug) > 0) { xlog("L_INFO", " --> $cfg(route): retargeting request to $ru to location $du \n"); } # Trigger failure route again t_on_failure("DISPATCH_MEDIA_FAILURE"); t_on_reply("DISPMEDIA_MANAGE_REPLY"); route(RELAY); exit; } route(ANNOUNCEREPLY); exit; } } I know about how Kamailio works by reading header from an 'input buffer' and writing to an 'output buffer'. I guess in case of t_on_failure the complete output buffer with corrected $ru and additional header is being discarded so I have to do all changes again? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] t_on_failure => what variables being reset to which values?
Hi List We t_on_failure re-route calls to another destination in case one fails for example announcement servers... Before sending to the announcement server I do add some extra header to define which announcement in which language should be played: append_hf("IMP-annc: $avp(announcecode)\r\n"); append_hf("IMP-mandate: $avp(mandate)\r\n"); append_hf("IMP-language: $avp(callerlang)\r\n"); Also $rU is being set prior to sending the call to the announcement server. Now one of our announcement servers became unavailable and t_on_failure was triggered. The 2nd announcement servers was receiving the calls without any of the additional header and with the 'inbound' $ru without the altered $rU https://www.kamailio.org/docs/modules/devel/modules/tm.html#tm.f.t_on_failure I'm a bit confused by that, as this states the URI is reset to the value it had on 'relaying'. Is this on 'inbound replaying' or on 'outbound relaying' when route(RELAY) was called to send the call TO the first annoucement server? Is there a bit more specific information on that behaviour? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] + character in send_reply causes truncation of reply message?
Hi send_reply("403", "+411234567 transit disallowed"); Causes the reply to be truncated after the e164 number. send_reply("403", "Forbidden +411234567 transit disallowed"); Causes the reply to be truncated after 'Forbidden'. Is there a special meaning to the + character? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] How to determine size (number of elements) in xavp stack?
Dear Community In my previous post I mentioned my problem with sql_xquery I fear I used this wrong. $dbr is probably only populated if sql_query is used. Anyway, it is always 0 in my testings, even if I clearly get a result. Now I would like to know how many results I have. How can I determine the size of an $xavp stack (or array)? Or is there another way to get the number of rows returned by a sql_xquery without looping an index through all rows? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
[SR-Users] sql_xquery return 1 on 0 rows?
Dear List... kamcmd> version kamailio 5.4.7 (x86_64/linux) Strange issue found. According to: https://kamailio.org/docs/modules/5.4.x/modules/sqlops.html I should get return value 2 if no rows returned: $var(query) contains a query that does not match (number is not assigned) if (sql_xquery("impkam", "$var(query)", "assignedtn") == 1) { if ($avp(debug) > 1) { xlog("L_INFO", "$cfg(route): SQL Dump Result: $var(assignedtn) ROWS: $dbr(assignedtn=>rows) \n"); } do stuff with the assigned number } else { do stuff in case that number is not assigned } Log Output: CHECK_ASSIGNED_TN: SQL Dump Result: 0 ROWS: 0 So the return value of the query was == 1 but the result contains no rows. How can that be? -- 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 PrattelnFax +41 61 826 93 01 Schweiz Web http://www.imp.ch __ __ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users