On Jun 18, 2003 at 15:55, Younger Wang wygmail@yeah.net wrote:
I am trying to understand how tm module works.
I found in http://www.iptel.org/ser/doc/prerelease/x545.html---%3EStateful User Agent Server: ______________________________________________ t_newtran shields subsequent code from retransmissions. It returns success and continues when a new request arrived. It exits current route block immediately on receipt of a retransmissions.
I found in the README included in tm module: _______________________________________________ Name: t_newtran Params: 0 Desc: creates a new transaction, returns a negative value on error; this is the only way a script can add a new transaction in an atomic way; typically, it is used to deploy a UAS
I think the two explanations above are inconsistent. I am quite confused. Take the scripts below for example: _______________________________ if ( !t_newtran()) { sl_reply_error(); break; };
There are 3 possible outcomes of t_newtran: - this is a new transaction => returns true - this is a retransmission => in script it forces a break (it does not return, it just stops script processing) - some error occured (e.g. bad via ) => returns false
The actual module function (the C one, not the script one) will return 1 in the first case, 0 in the second (a module function returning 0 forces a break/drop) and a value <0 in the third case (which is equivalent to false in the script).
Andrei