Hi

I have a  kamailio 5.7.1  running as TLS gateway for PBXs in private LAN network:

UAC-WAN(sip-tls) <--> kamailio-WAN(sip-tls) - kamailio-LAN(sip)  <--> PBX-LAN(sip)
80.0.0.1 <--> 80.0.0.2 - 10.0.0.1 <--> 10.0.0.2


All communications tested  works well except for re-INVITE like when UAC put the call on hold .

The  re-INVITE packet is managed like a new call
and the tm module doesn't match transaction  :

matching_3261(): RFC3261 transaction matching failed - via branch [z9hG4bK-524287-1---5e900485d5ad0faf]
t_lookup_request(): no transaction found
build_cell(): created new cell
t_relay_to(): new INVITE


I try to send the interesting logs and config


call logs and pcap : https://filebin.net/vdezuhyn7wdy3lqc


kamailio config  :

...
request_route {

        if (is_method("CANCEL")) {
                if (t_check_trans()) {
                        route(RELAY);
                }
                exit;
        }


        if (!is_method("ACK")) {
                if(t_precheck_trans()) {
                        t_check_trans();
                        exit;
                }
                t_check_trans();
        }

        route(WITHINDLG);


        if ($si=="PBXIP0" || $si=="PBXIP1" || $si=="PBXIP2" || $si=="PBXIP3"   ) {


                if (!loose_route()) {
                        switch($rc) {
                        case -2:
                                sl_send_reply("403", "Forbidden");
                                exit;
                        }
                }

                remove_hf("Route");
                force_rport();
                record_route();
                $fs = "tls:WANIP:5061";
      
        }

               if (is_method("INVITE|SUBSCRIBE")){
                        record_route();
                }


             t_on_failure("MANAGE_FAILURE");
               $fs = "udp:LANIP:5060";
        }

        route(RELAY);
        exit;


}



route[WITHINDLG] {
        if (!has_totag()) return;


        if ($si=="PBXIP0" || $si=="PBXIP1" || $si=="PBXIP2" || $si=="PBXIP3") {
                route(RTPMANAGE);
                route(RELAY);
                exit;
        }


        if (loose_route()) {
                if ( is_method("NOTIFY") ) {
                        record_route();
                }

                route(RTPMANAGE);
                route(RELAY);
                exit;
        }

        if ( is_method("ACK|BYE") ) {
                route(RTPMANAGE);
                route(RELAY);
        }

        sl_send_reply("404","Not here");
        exit;
}


How can I solve this ?

Best Regards

Leo