Hi Andrei:
Thanks for the quick response.
The pseudo codes is like:
t=tmb.t_gett(); send_request(method_ACK); send_request(method_BYE); reason_code = 488 tmb.t_reply(t->uas.request,reason_code,reason_text); (Not sure if t_reply can be called here or not.)
The ACK/Bye is sent to U2, 488 is sent to U1,
But the issue is it seems the original 200 OK is forwarded to U1 as well.
How to avoid it?
You need either to DROP the reply (add drop in the script after your function), or use the generic onreply_route ( [0] or unnamed).
So: onreply_route[1] { if (my_function_check("")) { release_call_onreply(""); Drop; }
}
Anyway you would need to modify t_reply, or it won't work from the onreply_route (at least not in sr 3.*).
I guess what you mean is : even with drop, this function seems need to be modified ( since the reply is 200 OK.)
In the tm/t_reply.c->reply_received: run_top_route(onreply_rt.rlist[t->on_reply], p_msg, &ctx); if ((ctx.run_flags&DROP_R_F) && (msg_status<200)) { if (unlikely(replies_locked)) { replies_locked = 0; UNLOCK_REPLIES( t ); } goto done; }
What is the good reason for checking msg_status<200 there?
Kind regards
Min Wang
Or should the Data lumps function be used here to modify the 200
reply
msg instead of using t_reply here?
No, you won't be able to change the reply code that way.
Andrei