[sr-dev] t_check_trans with in-dialog requests

Hugh Waite hugh.waite at crocodile-rcs.com
Mon Jul 15 19:04:56 CEST 2013


Hi,
This is happening in the WITHINDLG route of our config. For gruu'd 
clients, we run t_check_trans and then do the location lookup. I added 
some extra debug and found it is returning -1 for ACKs to both 407 and 
200 in-dialog responses.

    route[WITHINDLG] {
       if (has_totag()) {
         if (is_method("ACK")) {
           xlog("L_WARN", "Handling ACK...\n");
           t_check_trans();
           xlog("L_WARN", "...returned $rc\n");
         }
         ...
         # lookup/forward etc.
       }
    }

Hugh

On 15/07/2013 15:18, Daniel-Constantin Mierla wrote:
> Hello,
>
> because of the route headers, I guess there is a different path in 
> config file, not hitting t_check_trans() from config for ACK (or at 
> least the one I expected), ending in looking up the r-uri via 
> location, like normal requests within dialog.
>
> Can you try to hanlde the ack with t_check_trans() on that config path 
> as well, before changing r-uri?
>
> Cheers,
> Daniel
>
> On 7/15/13 10:28 AM, Hugh Waite wrote:
>> Hi,
>> I've attached the signalling trace of this call.
>> The ACK does have a Route set, but we think this is correct according 
>> to §17.1.1.3 of RFC3261.
>> "  If the INVITE request whose response is being acknowledged had 
>> Route header fields, those header fields MUST appear in the ACK. This 
>> is to ensure that the ACK can be routed properly through any 
>> downstream stateless proxies.  "
>>
>> A failure response to an INVITE does not have a Contact header and a 
>> reINVITE does not Record-Route, so the ACK needs to be constructed in 
>> the same way as the INVITE w.r.t. request URI and Route set.
>> When the ACK for the 407 arrives, can kamailio detect that the 
>> transaction is in the 'Completed' state and drop it [1]?
>>
>> Hugh
>>
>> [1] RFC 6026 §8.6 which updates RFC3261 §17.2.1
>>
>>
>> On 12/07/2013 16:22, Daniel-Constantin Mierla wrote:
>>> Hello,
>>>
>>> iirc, ACKs for negative replies should be hop-by-hop, without any 
>>> route set. Maybe you can paste a ngrep with invite/407/ack to see 
>>> exactly what is there.
>>>
>>> On the other hand, t_check_trans() for ack returns true if there is 
>>> an active invite transaction associated with it, because ack itself 
>>> does not create transaction, being a request that doesn't take a reply.
>>>
>>> Cheers,
>>> Daniel
>>>
>>> On 7/12/13 5:11 PM, Hugh Waite wrote:
>>>> Hello,
>>>> I have a question on the use of t_check_trans for in-dialog requests.
>>>>
>>>> If an in-dialog INVITE is challenged by kamailio (sending a 407 
>>>> response), the ACK should be absorbed. However, the t_check_trans 
>>>> function does not terminate the script. In our config, this means 
>>>> the ACK gets sent to the client due to the route-set.
>>>>
>>>> Should t_check_trans recognise that this transaction was rejected 
>>>> locally, even though there is an onward route-set?
>>>>
>>>> Hugh
>>>>
>>>
>>
>>
>>
>>
>> _______________________________________________
>> sr-dev mailing list
>> sr-dev at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
> -- 
> Daniel-Constantin Mierla -http://www.asipto.com
> http://twitter.com/#!/miconda  -http://www.linkedin.com/in/miconda
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev


-- 
Hugh Waite
Principal Design Engineer
Crocodile RCS Ltd.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20130715/eb36be19/attachment.html>


More information about the sr-dev mailing list