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


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to