Hi Klaus,
Thanks! It really works great!
Carsten
Klaus Darilion schrieb:
Hi Carsten!
First I would differ between ACK and CANCEL.
If you use statefull forwarding, then it is sufficient to just t_relay, as tm will take care of hop-by-hop canceling. There is no need to rewrite the R-URI. There is only one problem: If the INVITE processing takes more time, than it may happen that the CANCEL hits the tm module before the tm module created a transaction. Thus, I discard CANCEL without existing transactions.
ACK: There are 3 kinds of possible ACK.
- stateless, e.g. if you use sl_send_reply("404",""), then the client
will send a "stateless" ACK. This ACK will be absorbed by openser as soon as it is received and will never enter the routing logic. Thus, we do not have to care about them.
- statefull, sucessful call: The INVITE was answered with 200, thus
the caller sends an ACK to the callee. This ACK is in-dialog, and thus should be routed by the loose_route block (no need to rewrite any URI)
- statefull, unsuccessful call: The call was rejected or cancelled.
Thus, we have hop-by-hop ACKs. Thus, the ACK must be handled to the tm moudle, which takes care of it (no need to rewrite any URI).