Hi guys,
Just to bring some clarifications on the TM module.
once a transaction is completed (negative or 2xx reply), it is put on wait (wait timer - see RFC3261) for catching any potential retransmissions of replies. So, the transaction is completed, but not removed from memory - RFC does not say that you need to trash immediately all the transaction information, but even describe the wait timer. So, there is no contradiction.
The ACK (for 2xx)catching is done based on the completed INVITE transaction (from wait timer) - nothing else.
The end-to-end ACK establish a separate transaction (RFC 3261) and these ACKs are not match as part of the INVITE transactions, but correlated with them.
Inaki, could you please detail what you mean by:
<quote> In my opinion OpenSer does a special treatment for ACK in tm mode, even if they are for failed transaction (hop-by-hop ACK's) or succesfull INVITE (end-to-end ACK's).
</quote>
Maybe I can explain you more if I understand you question....
Regards, Bogdan
IƱaki Baz Castillo wrote:
On Tuesday 12 February 2008 12:18:15 Taisto Qvist wrote:
t_check_trans() :
ACK request - true if the ACK is a local end-to-end ACK for an existent INVITE transaction.
To me, that sounds like a contradiction in terms, since there is (rfc-wise) no transaction left after 2xx has been proxied through
Good point. Hope there is a explanation of this behaviour. In my opinion OpenSer does a special treatment for ACK in tm mode, even if they are for failed transaction (hop-by-hop ACK's) or succesfull INVITE (end-to-end ACK's).
Then how long does the transaction live after 2xx has been forwarded? How come its implemented this way?
There is a specific timer in RFC 3261 for this purpose (if I'm not wrong). Maybe OpenSer uses that timer to keep transaction info and during that time matches the end-to-end ACK as part of the transaction (no very RFC of course, but it seems to work).
Regards.