[SR-Users] Recommendation for a signaling B2BUA to work with Kamailio on Ubuntu

2024-06-07 Thread Benoît Panizzon via sr-users
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

2024-05-31 Thread Benoît Panizzon via sr-users
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?

2024-05-31 Thread Benoît Panizzon via sr-users
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

2024-05-31 Thread Benoît Panizzon via sr-users
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?

2024-05-30 Thread Benoît Panizzon via sr-users
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?

2024-05-30 Thread Benoît Panizzon via sr-users
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.

2024-04-06 Thread Benoît Panizzon via sr-users
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())

2024-04-05 Thread Benoît Panizzon via sr-users
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()

2024-04-05 Thread Benoît Panizzon via sr-users
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?

2024-02-23 Thread Benoît Panizzon via sr-users
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?

2024-02-16 Thread Benoît Panizzon via sr-users
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?

2024-01-30 Thread Benoît Panizzon via sr-users
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

2024-01-26 Thread Benoît Panizzon via sr-users
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?)

2024-01-26 Thread Benoît Panizzon via sr-users
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

2024-01-26 Thread Benoît Panizzon via sr-users
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?

2024-01-26 Thread Benoît Panizzon via sr-users
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?

2024-01-26 Thread Benoît Panizzon via sr-users
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

2024-01-25 Thread Benoît Panizzon via sr-users
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?

2024-01-25 Thread Benoît Panizzon via sr-users
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?

2024-01-12 Thread Benoît Panizzon via sr-users
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?

2024-01-12 Thread Benoît Panizzon via sr-users
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?

2023-12-12 Thread Benoît Panizzon via sr-users
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!

2023-11-21 Thread Benoît Panizzon via sr-users
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!

2023-11-20 Thread Benoît Panizzon via sr-users
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!

2023-11-20 Thread Benoît Panizzon via sr-users
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?!?

2023-11-10 Thread Benoît Panizzon via sr-users
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]

2023-10-24 Thread Benoît Panizzon via sr-users
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

2023-10-20 Thread Benoît Panizzon via sr-users
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

2023-10-20 Thread Benoît Panizzon via sr-users
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

2023-09-22 Thread Benoît Panizzon
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

2023-09-22 Thread Benoît Panizzon
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

2023-09-21 Thread Benoît Panizzon
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!

2023-09-15 Thread Benoît Panizzon
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?

2023-09-08 Thread Benoît Panizzon
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?

2023-09-08 Thread Benoît Panizzon
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?

2023-09-08 Thread Benoît Panizzon
> $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?

2023-09-08 Thread Benoît Panizzon
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?

2023-09-08 Thread Benoît Panizzon
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?

2023-09-08 Thread Benoît Panizzon
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?

2023-09-08 Thread Benoît Panizzon
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

2023-07-05 Thread Benoît Panizzon
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

2023-07-05 Thread Benoît Panizzon
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

2023-06-09 Thread Benoît Panizzon
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?

2023-05-26 Thread Benoît Panizzon
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?

2023-05-12 Thread Benoît Panizzon
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?

2023-05-12 Thread Benoît Panizzon
> 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?

2023-05-12 Thread Benoît Panizzon
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

2023-05-05 Thread Benoît Panizzon
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?

2023-05-02 Thread Benoît Panizzon
> 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?

2023-04-21 Thread Benoît Panizzon
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?)

2023-04-21 Thread Benoît Panizzon
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?

2023-04-21 Thread Benoît Panizzon
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?

2023-04-21 Thread Benoît Panizzon
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?

2023-04-11 Thread Benoît Panizzon
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)

2023-04-10 Thread Benoît Panizzon
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

2023-04-09 Thread Benoît Panizzon
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

2023-04-09 Thread Benoît Panizzon
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?

2023-04-01 Thread Benoît Panizzon
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?

2023-03-31 Thread Benoît Panizzon
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?

2023-03-31 Thread Benoît Panizzon
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

2023-03-24 Thread Benoît Panizzon

> 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

2023-03-24 Thread Benoît Panizzon
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

2023-03-17 Thread Benoît Panizzon
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?

2023-02-17 Thread Benoît Panizzon
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?

2023-02-02 Thread Benoît Panizzon
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?

2023-02-02 Thread Benoît Panizzon
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?)

2023-01-27 Thread Benoît Panizzon
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

2023-01-20 Thread Benoît Panizzon
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

2023-01-20 Thread Benoît Panizzon
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

2023-01-20 Thread Benoît Panizzon
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

2023-01-20 Thread Benoît Panizzon
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

2022-12-22 Thread Benoît Panizzon
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)?

2022-12-20 Thread Benoît Panizzon
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?

2022-12-20 Thread Benoît Panizzon
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)?

2022-12-16 Thread Benoît Panizzon
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)?

2022-12-16 Thread Benoît Panizzon
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

2022-12-02 Thread Benoît Panizzon
> 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

2022-12-02 Thread Benoît Panizzon
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

2022-11-11 Thread Benoît Panizzon
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?

2022-11-11 Thread Benoît Panizzon
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?

2022-11-11 Thread Benoît Panizzon
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)

2022-10-21 Thread Benoît Panizzon
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?

2022-09-09 Thread Benoît Panizzon
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?

2022-09-09 Thread Benoît Panizzon

> $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?

2022-09-09 Thread Benoît Panizzon
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

2022-08-12 Thread Benoît Panizzon
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?

2022-06-24 Thread Benoît Panizzon
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?

2022-06-24 Thread Benoît Panizzon
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?

2022-06-24 Thread Benoît Panizzon
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

2022-06-24 Thread Benoît Panizzon
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?

2022-06-24 Thread Benoît Panizzon
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

2022-06-24 Thread Benoît Panizzon
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?

2022-06-24 Thread Benoît Panizzon
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

2022-04-29 Thread Benoît Panizzon
> 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

2022-04-29 Thread Benoît Panizzon
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?

2022-02-28 Thread Benoît Panizzon
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?

2022-02-28 Thread Benoît Panizzon
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?

2021-11-18 Thread Benoît Panizzon
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?

2021-11-08 Thread Benoît Panizzon
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?

2021-11-05 Thread Benoît Panizzon
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


  1   2   >