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.
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
regards klaus
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:
- What is the correct script code to relay a message, even with
retrasmissions and transaction already created?
- Is it OK to simply discard retrasmissions (not forwarding or replying
them)?
- How can I recognize retrasmissions? Is t_lookup_request() the correct
function for a test?
Thanks.
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:
- What is the correct script code to relay a message, even with
retrasmissions and transaction already created?
- Is it OK to simply discard retrasmissions (not forwarding or
replying them)?
- How can I recognize retrasmissions? Is t_lookup_request() the
correct function for a test?
Thanks.
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?
If you forward requests stateful (t_relay), incoming retransmission will be routed like the first message and will be absorbed by t_relay.
What is different in your setup that will cause problems?
regards klaus
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:
- What is the correct script code to relay a message, even with
retrasmissions and transaction already created?
- Is it OK to simply discard retrasmissions (not forwarding or
replying them)?
- How can I recognize retrasmissions? Is t_lookup_request() the
correct function for a test?
Thanks.
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:
- What is the correct script code to relay a message, even with
retrasmissions and transaction already created?
- Is it OK to simply discard retrasmissions (not forwarding or
replying them)?
- How can I recognize retrasmissions? Is t_lookup_request() the
correct function for a test?
Thanks.