[Serdev] Re: [Devel] tm bug in t_hooks.c

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Dec 7 16:10:34 CET 2005


Federico Giannici wrote:

> Bogdan-Andrei Iancu wrote:
>
>> Hi Federico,
>>
>> I'm afraid you have a script error - you called twice some functions 
>> which create transactions...The error is generate most probably by 
>> t_relay() which found the transaction already created in the script 
>> (maybe via t_newtran).
>
>
> Yes, I know it.
> It is the UAC module that create a transaction (I don't know if in any 
> case or only in some cases).
>
the uac module does not create a transaction - uac_replace_from() 
performs just text mangling and installs some hooks.

regards,
bogdan

> So when the message arrives at the classic t_relay() part of the 
> script, I cannot know if a transactionis is already established.
>
>
>> To be able to help, please send the script (privately, if necessary) 
>> to take a look.
>
>
> If you still think that there is problem somewhere, I will send the 
> script to you...
>
>
> Bye.
>
>
> P.S.
> I sent a similar question at "serusers at iptel.org", but still no 
> usefull reply...
>
>
>
>
>> Federico Giannici wrote:
>>
>>> Bogdan-Andrei Iancu wrote:
>>>
>>>> Hi Frederico,
>>>>
>>>> that's good..one more down....
>>>
>>>
>>> Well.... the AVPs are no more disappearing, but I still have some 
>>> problem with the reinvites...
>>>
>>> It seems that uac_replace_from() creates a transaction when an 
>>> INVITE retrasmission is received. Infact in that case the following 
>>> errors are logged for the retrasmitted INVITEs:
>>>
>>> Dec  5 18:49:25 eowyn OpenSER[5654]: ERROR: t_newtran: transaction 
>>> already in process 0x502a56f8
>>> Dec  5 18:49:25 eowyn OpenSER[5654]: ERROR: sl_reply_error used: I'm 
>>> terribly sorry, server error occurred (1/SL)
>>>
>>> This is generated by this standard code:
>>>
>>> if ( !t_relay() ) {
>>>     sl_reply_error();
>>> }
>>>
>>> I thought that I could find the retrasmissions (with the 
>>> t_lookup_request() function) and use the t_forward_nonack_uri() 
>>> function in that case, but I got the following error:
>>>
>>> Dec  5 18:47:29 eowyn OpenSER[26647]: ERROR:tm:t_forward_nonack: no 
>>> branch for forwarding
>>>
>>> Obviously, I have not enought undestanding of TM functions and 
>>> transactions in general.
>>>
>>> So, the question is: can anybody post a correct fragment of script 
>>> code that relay a message, correctly handling retrasmissions?
>>>
>>> Otherwise, could I simply discard retrasmissions (with a simple exit)?
>>> And how I can recognize retrasmissions? Is t_lookup_request() the 
>>> correct function for a test?
>>>
>>>
>>> Thanks.
>>>
>>>
>>>> Federico Giannici wrote:
>>>>
>>>>> Bogdan-Andrei Iancu wrote:
>>>>>
>>>>>> Hi Cesc,
>>>>>>
>>>>>> right!! as the transaction list is set all the time (disregarding 
>>>>>> the presence of callbacks), it should be also unset all the time....
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> This solves the bug of the AVPs disappearing with retrasmitted 
>>>>> INVITES too!!!
>>>>>
>>>>> Bogdan, now you can remove that bug from the ones to search for...
>>>>>
>>>>> Thank you Cesc.
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>




More information about the Devel mailing list