Thank you for your ideas! I considered doing the perl
solution but I wondered if there is a more "native" solution
to try first. the idea to patch t_reply seems legitimate,
but you are right about whether it may need additional
changes too, and which leg the reply goes back to in a reply
route, does it go to the one who sent 200? I guess that
needs to be checked but since my system is under load I am a
little hesitant about making big changes, maybe one of
Opensips people can comment too....
On Sun, Oct 20, 2024 at 10:28 PM mayamatakeshi
<mayamatake...@gmail.com> wrote:
On Sun, Oct 20, 2024 at 11:38 PM M S
<medea...@gmail.com> wrote:
Hi list,
I am having a problem that my upstream provider
disconnects the call if my client does not send
180/183 before 200 OK.
At the time of receiving 200 OK (in reply_route) I
can check to see if previously a 180/183 was also
sent or not.
My solution is: as soon as I receive a 200 OK from
the client, if 180/183 was not received before, I
create a 180 ringing message and send it to
upstream, before passing on 200. Now I realized that
none of the usual methods (send_reply,
sl_send_reply, t_send_reply) work from reply_route,
and I have no idea how to use dlg_send_sequential to
send a "180 ringing".
Any ideas would be appreciated.
dlg_send_sequential would not work as it is used to
generate a request.
I think opensips should allow t_reply to work from
within ONREPLY_ROUTE.
Currently it, doesn't:
opensips tm.c:
{"t_reply", (cmd_function)w_pv_t_reply, {
{CMD_PARAM_INT, fixup_reply_code, 0},
{CMD_PARAM_STR, 0, 0}, {0,0,0}},
REQUEST_ROUTE | FAILURE_ROUTE},
But kamailio which, as opensips, inherited the tm
foundation from openser allows it:
{"t_reply", w_t_reply, 2, fixup_t_reply, 0,
REQUEST_ROUTE | ONREPLY_ROUTE | FAILURE_ROUTE},
So you could try patching opensips t_reply by adding the
ONREPLY_ROUTE flag till this is allowed in opensips (I'm
not sure if it will work as extra changes in code might
be needed).
Alternatively, you could call a function in a
perl/lua/python module to change the "200 OK" with "180
Ringing", remove the top Via Header (beware that the Via
headers might be coalesced into a single one), remove
the body and use a raw socket to send the packet:
(ref:
https://opensips.org/html/docs/modules/3.5.x/perl.html#func_perl_exec)
Obs: I assume the language module inherits the
limitations from the route it is being executed on, so I
would not expect:
$m->sl_send_reply("180", "Trying");
to work, but you could try to see what happens.
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users