Dear Community,

I wrote before about my random issues with calls disconnection.
We found some issue in our VMWare environment that much packets was lost.
We resolved the issue by moving to other VMWare host however the issue is still present.

Currently it is random and some calls do not disconnect due to no BYE forwarded by kamailio to other side.

Here is the pcap of such call : https://www.dropbox.com/s/7bktz3p4im6ztld/bad-dialog-call.zip?dl=1

We use dialog module and dispatcher.

dlg_manage(); is only executed in this block : 

# - flags
#   FLT_ - per transaction (message) flags
#    FLB_ - per branch flags
#!define FLT_ACC 1
#!define FLT_ACCMISSED 2
#!define FLT_ACCFAILED 3
#!define FLT_DLG 4
.
.
.
    # account only INVITEs
    if (is_method("INVITE")) {
        setflag(FLT_DLG); # create dialog << i added it
        setflag(FLT_ACCMISSED); # do accounting even if failed << i added it
        setflag(FLT_ACC); # do accounting
        #route(LIMIT_CALLS);
        dlg_manage();
        sip_trace();
    }

I really have no idea i am unable to find differences between the bad and good call. 
The SIP packets looking good but the BYE is not processed.

Please help me out how to debug it?
I was thinking of adding a log for checking if request is BYE and if it is check if it match a dialog using is_known_dlg() method.

Please let me know if you see what is wrong.
Just to mention kamailio is listening on private IP with advertise to public IP.

Best regards!