Hi!
If the proxy replies stateless, how should the proxy handle the incoming ACK request?
e.g. an INVITE to an offline user:
if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }
The SIP client will respond with ACK to the 404 response. How shall I handle this ACK - just ignoring it?
BTW: Is it allowed to send stateless replies on existing transactions? e.g: t_newtran(); ... sl_send_reply(..);
thanks, Klaus
At 06:14 PM 3/15/2004, Klaus Darilion wrote:
sl_send_reply generates a specific to-tag. ACKs with this totag will be consumed before script processing occurs. This fails if there is already a to-tag -- then ACK gets inside the script. To address that one would have to reply statefuly and consume ACKs based on transaction state. I personaly prefer the stateless operation for better scalability.
It is not forbidden but it will break. If no reply is put in the transaction state, the transaction state will expie someday and generate 408. Use t_reply if you created transaction state. A typical sequence follows:
# message store if (method == "MESSAGE") { if (!t_newtran()) { # T-state not created, failure occured (lac of memory?) sl_reply_error(); # -> it is safe to reply statelessly break; };
if (m_store("0")) { # there is transaction state -> do reply statefuly now t_reply("202", "Accepted for Later Delivery"); break; };
# message store failed but T-state already exists -- again, reply # statefuly t_reply("503", "Service Unavailable"); break; };
-jiri