@miconda almost correct - your scenario would lead to the same error, but it is 
a scenario with ims_qos module.
The **t_suspend()** is not explicitly called, but it happens implicitly within 
the function 
                $var(aarret) = **Rx_AAR**("**MT_aar_reply**","term","",-1);
                 switch ($var(aarret)) {
                        case 0:
                                #suspend was successful and we must break
                                exit;

The module sends a DIAMETER AAR message to some peer while the 200 OK is 
suspended, but the DIAMETER response (AAA) indicates a failure.

The 488 is created by **dlg_terminate()** from ims_dialog module.
route[**MT_aar_reply**]
{
        #this is async so to know status we have to check the reply avp
        switch ($avp(s:aar_return_code)) {
                case 1:
                        xlog("L_DBG", "Diameter: Orig AAR success on media 
authorization\n");
                        break;
                default:
                        #comment this if you want to allow even if Rx fails
                        
if(dlg_get("$avp(CALLID_CUSTOM_AVP)","$avp(FTAG_CUSTOM_AVP)","$avp(TTAG_CUSTOM_AVP)")){
                                **dlg_terminate("all", "Sorry no QoS 
available")**;
                                usleep("100000");  #prm2272
                                exit;
                        }
        }
}

This leads to the situation that the 488 and the 200 OK are sent nearly at the 
same instance of time (only a few ms distance) and hence the ACK(488) is 
received AFTER the 200 OK is sent.

I can send you per e-mail a powerpoint from our analysis, OK?


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/2590#issuecomment-754504173
_______________________________________________
Kamailio (SER) - Development Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to