So, at the end it's not a "dead TCP" issue, but "avoiding duplication", when you have multiple contacts on a same AOR, but some of them are dead already.

Sort of the answer for me would be an additional parameter in tsilo and/or a mechanism, that also taking into account if sent out branch had been replied or no.

Le 04/10/2024 à 12:20, Ihor Olkhovskyi a écrit :

Looking at the code I see, that there is a check

https://github.com/kamailio/kamailio/blob/66fe6eb71e58a02222d1a2fb00f9a0cdb863134c/src/modules/tm/t_append_branches.c#L163

Yes, it's true, that call is sent to a same AOR, but "received" parameter is different (cause phone is making "new" register from a different port, meanwhile the old port is dead already)

Le 04/10/2024 à 10:28, Henning Westerholt a écrit :

Sure, it’s a workaround. It probably could be fixed in the ts_append(..) function, or in one of the functions that its uses (like from tm).

 

Cheers,

 

Henning

 

From: Ihor Olkhovskyi <igorolhovskiy@gmail.com>
Sent: Freitag, 4. Oktober 2024 10:26
To: Henning Westerholt <hw@gilawa.com>; Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Subject: Re: [SR-Users] t_append_branches() and "dead" tcp connections

 

Henning ,

Yes, I did. But as I've said, in a really small number of cases it does not help. As a drawback, too frequent TCP keepalives making Android not close the app and it does not help either.

At the end, it's a workaround, not a "proper solution", I think.

Le 04/10/2024 à 10:14, Henning Westerholt a écrit :

Hello,

 

already tried to use short TCP keepalive intervals on a network level? This way the dead connections should be detected and removed.

 

Cheers,

 

Henning

 

From: Ihor Olkhovskyi <igorolhovskiy@gmail.com>
Sent: Freitag, 4. Oktober 2024 10:09
To: Henning Westerholt <hw@gilawa.com>; Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Subject: Re: [SR-Users] t_append_branches() and "dead" tcp connections

 

Henning,

That's what I did for the moment, but sometimes, especially with Android endpoints, I'm getting a situation where there is a "dead" TCP connection, cause some devices not really taking care about closing them properly. And on TCP timeout expiry time the device is literally unreachable.

Le 04/10/2024 à 09:52, Henning Westerholt a écrit :

Hello Ihor,

 

what just about setting handle_lost_tcp to 1 to remove dead TCP connection and to prevent this error?

 

Cheers,

 

Henning

 

From: Ihor Olkhovskyi via sr-users <sr-users@lists.kamailio.org>
Sent: Donnerstag, 3. Oktober 2024 21:04
To: Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Cc: Ihor Olkhovskyi <igorolhovskiy@gmail.com>
Subject: [SR-Users] t_append_branches() and "dead" tcp connections

 

Hello,

 

Recently encountered an issue with tsilo (that is using t_append_branches), but not sure found a root cause.

 

So, I have a call, but aparently there are some "dead" TCP connections in a "location" table

modparam("usrloc", "handle_lost_tcp", 0)

 

On call initialtion, INVITE's are sent to "last seen" location, but aparently there is no answer and I assume it's in a state "trying to establish TCP connection"

Obviously, there is no "100 Trying" answer on any outgoing INVITE.

 

Than, a REGISTER comes from a contact, that is supposed to be called.

Usual 

ts_append("location", "$tu");

is called, but in the logs I see

[REGISTER] tm [t_append_branches.c:208]: t_append_branches(): failure to add branches (-1)

 

If there is an active TCP connection, branches are added as expected. I'm getting this only in a case of trying to establish a call to a "dead" TCP connection.

 

What am I missing here or it sounds like a bug?

--

Best regards,

Ihor (Igor)