[Serusers] More detailed explanation of t_newtran needed.

Jiri Kuthan jiri at iptel.org
Thu Jun 19 17:33:08 CEST 2003


At 06:40 PM 6/19/2003, Younger Wang wrote:
>Simplified code:
>
>if(method=="INVITE")  {
>    t_newtran();
>    t_relay();
>    };
>
>If the same INVITE is received twice, it will be processed only for one
>time. However if the same INVITE is sent three times,
>this INVITE will be processed when the second transmission is received.  

Sure, when transaction state expires some day, a retransmission will be
processed as a new request.

-jiri

>So
>I wonder, if the third transmission is received, the process will trap in
>t_newtran() and will never return until a timeout is reached?
>
>Younger Wang
>
>
>----- Original Message ----- 
>From: "Jiri Kuthan" <jiri at iptel.org>
>To: "Younger Wang" <wygmail at yeah.net>; <serusers at lists.iptel.org>
>Sent: Wednesday, June 18, 2003 1:51 PM
>Subject: Re: [Serusers] More detailed explanation of t_newtran needed.
>
>
>> At 12:55 AM 6/19/2003, Younger Wang wrote:
>> >I am trying to understand how tm module works.
>> >
>> >I found in http://www.iptel.org/ser/doc/prerelease/x545.html--->Stateful
>> >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 don't think so.
>>
>> >I am quite confused.
>> >Take the scripts below for example:
>> >_______________________________
>> >if ( !t_newtran()) {
>> >  sl_reply_error();
>> >  break;
>> > };
>> >
>> > # the following log will be only printed on receipt of
>> > # a new message; retranmissions are absorbed by t_newtran
>> > log(1, "New Transaction Arrived\n");
>> > if (uri=~"a@") {
>> >  if (!t_reply("409", "Bizzar Error")) {
>> >   sl_reply_error();
>> >  };
>> > } else {
>> >  if (!t_reply("699", "I don't want to chat with you")) {
>> >   sl_reply_error();
>> >  };
>> >    };
>> >-------------------------------
>> >
>> >My understanding is: If t_newtran() returns successfully, the scripts
>will
>> >not execute forward until a new message rather than retransmission of the
>> >original message is received. Am I right?
>>
>> I don't know since I don't parse your message quite. If t_newtran returns
>> successfuly, it indicates a new request which should be processed. It is
>> an error otherwise. Retransmissions cause immediate leave of script
>processing.
>>
>> -jiri
>>
>> >If wrong, how does it work
>> >actually?
>> >
>> >Thanks!
>> >
>> >Younger Wang
>> >
>> >_______________________________________________
>> >Serusers mailing list
>> >serusers at lists.iptel.org
>> >http://lists.iptel.org/mailman/listinfo/serusers
>>
>> --
>> Jiri Kuthan            http://iptel.org/~jiri/
>> 

--
Jiri Kuthan            http://iptel.org/~jiri/ 



More information about the sr-users mailing list