Bogdan-Andrei Iancu wrote:
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.
Indeed, the problem is just in the installation of the hooks!
I made a function to test when a transaction is establied with the
following code:
t = get_t();
if( t && t != T_UNDEFINED )
TRANSACTION
else
NO TRANSACTION
In this way I traced the exact point where the transaction is established.
It is done in the replace_from() function, when the
uac_tmb.register_tmcb() is called.
In the register_tmcb() function, it is done by the t_check() function call.
In the t_check() function, it is done by the t_lookup_request() function
call.
The t_lookup_request() fuction goes to the "found:" label and the
transaction is established by the set_t() function.
I think that this should be enought information for you to find where is
the problem. I don't have enought "know how" to go further...
I remember you that all this happens only for retrasmissions of INVITEs
(and maybe other type of messages). No transaction is established for
the first occurence of the message.
Bye.
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 "[EMAIL PROTECTED]", 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.
--
___________________________________________________
__
|- [EMAIL PROTECTED]
|ederico Giannici http://www.neomedia.it
Presidente del cda - NEOMEDIA srl
___________________________________________________
_______________________________________________
Devel mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/devel