e2e ACK is a different transaction (different branch id) than the invite transaction .

So t_check_trans() will never succeed for e2e ACK.

You can use is_known_dlg() to check all in dialog requests (e2e ACK included)

Le 28 oct. 2024 16:07, Benoit Panizzon via sr-users <sr-users@lists.kamailio.org> a écrit :

Hi List

To correctly route ACK belonging to a transaction (totag) the example
code does:

        if ( is_method("ACK") ) {
                if ( t_check_trans() ) {
route(RELAY);
exit;
} else {
xlog("L_INFO", "$cfg(route): $rm NOT loose route NO transaction found DROP\n");
exit;
}
}

Unfortunatels I fear that in a parallell forking scenario, the
transaction is remove from memory as soon as the first 'negative' ACK
is being processed so that the end 2 end ACK to the 200 OK of the
branch that connected the call, never makes it through.

I attempted to increase wt_timer to 10000 to have the transaction stay
around 10 seconds but that does not solve the issue.

I read that t_check_trans()'s result shall be considered more as a hint
than as a confirmation of an existing transaction.

Is there a clean / secure way to process e2e ACK and make sure they
belong to a transaction? Or can I just safely remove the
t_check_trans() call and route any ACK with a totag?

Mit freundlichen Grüssen

-Benoît Panizzon-
--
I m p r o W a r e   A G    -    Leiter Commerce Kunden
______________________________________________________

Zurlindenstrasse 29             Tel  +41 61 826 93 00
CH-4133 Pratteln                Fax  +41 61 826 93 01
Schweiz                         Web  http://www.imp.ch
______________________________________________________
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to sr-users-leave@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender!
Edit mailing list options or unsubscribe: