[sr-dev] git:master: tmx: documentation for t_precheck_trans()

Daniel-Constantin Mierla miconda at gmail.com
Tue Aug 19 09:57:56 CEST 2014


On 19/08/14 09:07, Juha Heinanen wrote:
> Daniel-Constantin Mierla writes:
>
>> +   Example 1.11. t_precheck_trans usage
>> +...
>> +    # handle retransmissions
>> +    if(t_precheck_trans()) {
>> +        t_check_trans();
>> +        exit;
>> +    }
>> +    t_check_trans();
> why t_check_trans() is called when t_precheck_trans() returns true?  why
> exit is not enough?
The purpose of t_check_trans() there is for the case when the 
transaction was already created by another process, resulting in 
retransmitting back the last reply (what rfc recommends).

Practically, t_precheck_trans() stores the 
callid/from-tag/cseq/via-branch in a shared memory structure and checks 
if another process has the same values. It can be the case of a match, 
but the other process can be ahead with processing and the transaction 
was created for that request.

I considered of doing t_check_trans() from inside t_precheck_trans(), 
but then I thought it gives more flexibility via config. 
t_precheck_trans() should be very fast, these structures are indexed by 
call id in a hash table, only when a child handles a request with 
request_route.

If you just want to drop the retransmission, you can skip 
t_check_trans() inside the if.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA




More information about the sr-dev mailing list