[Serusers] How to handle retrasmissions?

Federico Giannici giannici at neomedia.it
Wed Dec 7 15:58:16 CET 2005


Klaus Darilion wrote:
> Hi Federico!
> 
> I have not followed the whole thread, sorry. Maybe we should go back on 
> step. What problems do you have with retransmission? Do you mean 
> retransmissions from the client to ser, or from ser to the next hop?

Retrasmissions are from client to SER (client is on a slow line).

(BTW, to make the event "reproducible" in my tests, I put a delay of 3 
seconds for every message received.)


> If you forward requests stateful (t_relay), incoming retransmission will 
> be routed like the first message and will be absorbed by t_relay.

By "absorbed" do you mean that retrasmissions are simply discarded?

So, it's fine if, before t_relay(), I test if a given message is a 
retrasmission and simply discard it?


> What is different in your setup that will cause problems?

The problem is that I cannot know "a priori" if a given module 
(OpenSER's UAC, in my case) has already created a transaction, so I 
cannot know if I can safely call t_relay().

Thanks.



> Federico Giannici wrote:
> 
>> Klaus Darilion wrote:
>>
>>> Take a look at the documentation of openser. The functions of the tm 
>>> module are well documented and I think the meaning in ser is still 
>>> the same. I guess your are looking for t_forward_nonack()
>>> http://openser.org/docs/modules/1.0.x/tm.html#AEN351
>>
>>
>>
>> I already tryed to use t_forward_nonack(), but I got errors like this:
>>
>> Dec  5 18:47:29 eowyn OpenSER[26647]: ERROR:tm:t_forward_nonack: no 
>> branch for forwarding
>>
>> What am I missing?
>>
>> Thanks.
>>
>>
>> P.S.
>> What about question number 2?
>>
>>
>>
>>> Federico Giannici wrote:
>>>
>>>> What is the correct way to handle message retrasmissions?
>>>>
>>>> Usually t_relay() seems to hadle them correctly. But if a 
>>>> transactions was previously created by some module function, I found 
>>>> that t_relay() (and subsequent sl_reply_error()) generates the 
>>>> following errors:
>>>>
>>>> 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)
>>>>
>>>> So, I have the following questions:
>>>>
>>>> 1) What is the correct script code to relay a message, even with 
>>>> retrasmissions and transaction already created?
>>>>
>>>> 2) Is it OK to simply discard retrasmissions (not forwarding or 
>>>> replying them)?
>>>>
>>>> 3) How can I recognize retrasmissions? Is t_lookup_request() the 
>>>> correct function for a test?
>>>>
>>>>
>>>> Thanks.


-- 
___________________________________________________
     __
    |-                      giannici at neomedia.it
    |ederico Giannici      http://www.neomedia.it
___________________________________________________




More information about the sr-users mailing list