Iñaki Baz Castillo schrieb:
El Tuesday 12 August 2008 08:55:49 Klaus Darilion
escribió:
Anyway
other problem will occur with the following ACK. If 2XX the ACK is
a new transaction but AFAIK OpenSer matches it (in some way) to the
INVITE transaction (now expired). If non 2XX then the ACK is part of the
INVITE transaction so it will not delivered to the UAS because the
transaction expired.
Indeed, ACK routing will be more difficult. 200-OK ACK should
be loose
routed - thus no problem.
Well, "no problem"? I thing it must be handled doing something as:
if method == "ACK" {
if ! t_checktran <-- Because transaction is deleted now
lookup("location")
...
Basically yes, but not for in-dialog modules. Usually you first have
if (loose_route())
...
if method == "ACK" {
if ! t_checktran <-- Because transaction is deleted now
lookup("location")
non-200 ACK I guess will be absorbed by tm
(not sure about this).
How can occur tha tif transaction has been already deleted?
proxy
---INVITE--->|
|---INVITE------>
|
fr_timeout fires
wt_timer fires (now the transaction is remove from tm)
|<----180--------
<-180--------|
|<---500---------
<--500-------|
|
---ACK------>|
| ACK (if using the logic from above)
regards
klaus