<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<font face="monospace">Hi Ryzhik,<br>
<br>
Right, the transaction must be forced to stay until you are done
with a final reply. Unfortunately there is no clear way to do this
from script (this may be subject of further small improvements),
but you can try taking advantage of the `t_write_req` [1] for this
purpose, even if you do not have to actually write anything to
outer world - just fake it.<br>
<br>
<br>
[1]
<a class="moz-txt-link-freetext" href="https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_write_req">https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_write_req</a><br>
<br>
Regards,<br>
</font>
<pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="https://www.opensips-solutions.com">https://www.opensips-solutions.com</a>
OpenSIPS Summit 27-30 Sept 2022, Athens
<a class="moz-txt-link-freetext" href="https://www.opensips.org/events/Summit-2022Athens/">https://www.opensips.org/events/Summit-2022Athens/</a></pre>
<div class="moz-cite-prefix">On 10/13/22 2:45 PM, Ryzhik Ivan wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAG9R00rNEm-TipwYND3DeAMNp21yTMAaC0GZEzDMDMROeov2XQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">Hi.
<div>One more question.</div>
<div>Everything works fine except the transaction was deleted
after 15 sec after the initial route was finished.</div>
<div>on INVITE i last do t_reply_with_body(183, "Session
progress", ...) and than exit;</div>
<div><br>
</div>
<div>on end route log :</div>
<div><br>
</div>
<div>2022-10-13T10:58:01.994598+00:00 DBG:tm:_reply_light:
reply sent out. buf=0x7f558a087d98: SIP/2.0 1...,
shmem=0x7f5549797470: SIP/2.0 1<br>
2022-10-13T10:58:01.994676+00:00 DBG:tm:_reply_light:
finished<br>
</div>
<div><br>
</div>
<div>2022-10-13T10:58:01.995835+00:00 DBG:tm:do_t_cleanup:
transaction 0x7f5549793b18 already updated! Skipping update!<br>
2022-10-13T10:58:01.996020+00:00 DBG:tm:cleanup_uac_timers:
RETR/FR timers reset<br>
2022-10-13T10:58:01.996202+00:00 <b>DBG:tm:insert_timer_unsafe:
[2]: 0x7f5549793b98 (12)</b><br>
2022-10-13T10:58:01.996317+00:00 <b> DBG:tm:t_unref:
UNREF_UNSAFE: [0x7f5549793b18] after is 0</b><br>
2022-10-13T10:58:01.996488+00:00 DBG:core:destroy_avp_list:
destroying list (nil)<br>
2022-10-13T10:58:01.996673+00:00 DBG:core:receive_msg:
cleaning up<br>
<br>
2022-10-13T10:58:07.651091+00:00<b> DBG:tm:timer_routine:
timer routine:2,tl=0x7f5549793b98 next=(nil), timeout=12</b><br>
2022-10-13T10:58:07.651332+00:00 DBG:tm:wait_handler:
removing 0x7f5549793b18 from table<br>
2022-10-13T10:58:07.651425+00:00 DBG:tm:delete_ce<b>ll:
delete transaction 0x7f5549793b18</b><br>
2022-10-13T10:58:07.651513+00:00 DBG:tm:wait_handler: done<br>
<br>
</div>
<div>Can you tell me how I can i fix this? Transaction marked
safe for deletion...</div>
<div>Regards, Ivan</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">ср, 12 окт. 2022 г. в 13:11,
Bogdan-Andrei Iancu <<a href="mailto:bogdan@opensips.org"
moz-do-not-send="true">bogdan@opensips.org</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> <font face="monospace">Perfect !!!</font><br>
<pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="https://www.opensips-solutions.com" target="_blank" moz-do-not-send="true">https://www.opensips-solutions.com</a>
OpenSIPS Summit 27-30 Sept 2022, Athens
<a href="https://www.opensips.org/events/Summit-2022Athens/" target="_blank" moz-do-not-send="true">https://www.opensips.org/events/Summit-2022Athens/</a></pre>
<div>On 10/12/22 1:09 PM, Ryzhik Ivan wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">I found a solution. hex strings are
reversed).
<div>Thank you very much!</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">ср, 12 окт. 2022 г. в
12:59, Ryzhik Ivan <<a
href="mailto:ryzhik.ivan@gmail.com" target="_blank"
moz-do-not-send="true">ryzhik.ivan@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div dir="ltr">and one more research: $T_id returns
hex encoded label.hashid
<div>but my attempts failed:</div>
<div>got $T_id = 6545e285.3fe4</div>
<div>Send: {"jsonrpc": "2.0", "method": "t_reply",
"id": 1, "params": {"code": "487", "reason":
"Terminating", "trans_id": "16356:1699078789",
"to_tag": "<null>"}}</div>
<div>Got:
b'{"jsonrpc":"2.0","error":{"code":404,"message":"Transaction
not found"},"id":1}'<br>
<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">ср, 12 окт. 2022
г. в 11:13, Ryzhik Ivan <<a
href="mailto:ryzhik.ivan@gmail.com"
target="_blank" moz-do-not-send="true">ryzhik.ivan@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px
0px 0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div dir="ltr">Thank you, Bogdan.
<div>I got stuck with tm documentation. </div>
<div> 1) MI t_reply command has named
parameters, ok, no problem. </div>
<div> 2) trans_id - transaction identifier (has
the hash_entry:label format) - what is this?
if i use $T_id i got reply "Invalid trans_id".</div>
<div> 3) Where can I get to_tag from script
level on initial invite?</div>
<div> ...</div>
<div> t_reply_with_body(183, "Session
progress", $(var(body){re.subst,$var(re)}) );<br>
avp_db_query("insert into moh (callid,
timeout, tid,totag) values ('$ci',
$var(wait_time), '$T_id', '??????')"); <br>
...</div>
<div><br>
</div>
<div>Regards, Ivan.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">вт, 11 окт.
2022 г. в 12:35, Bogdan-Andrei Iancu <<a
href="mailto:bogdan@opensips.org"
target="_blank" moz-do-not-send="true">bogdan@opensips.org</a>>:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> <font face="monospace">Hi Ivan,<br>
<br>
you can use timer_route, but as there is
no way to send a reply for a particular
transaction from script level (only to the
currently processed request), you will
have to trigger the MI cmds from the timer
route, which is a bit hackish ....<br>
<br>
Regards,<br>
</font>
<pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="https://www.opensips-solutions.com" target="_blank" moz-do-not-send="true">https://www.opensips-solutions.com</a>
OpenSIPS Summit 27-30 Sept 2022, Athens
<a href="https://www.opensips.org/events/Summit-2022Athens/" target="_blank" moz-do-not-send="true">https://www.opensips.org/events/Summit-2022Athens/</a></pre>
<div>On 10/11/22 11:47 AM, Ryzhik Ivan
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi, Bogdan!
<div>What d' you think, can we use
timer_route instead of an external
script?</div>
<div>Regards, Ivan.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">пн, 10
окт. 2022 г. в 17:04, Bogdan-Andrei
Iancu <<a
href="mailto:bogdan@opensips.org"
target="_blank"
moz-do-not-send="true">bogdan@opensips.org</a>>:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div> <font face="monospace">Hi
Ryzhik,<br>
<br>
Without a t_relay() it makes not
much sense to have an dialog
structure at all - the dialog
module in opensips is actually
design for proxied calls, not for
UAC calls.<br>
<br>
IMO, you should keep it a
transaction level, by sending
replies back only. When getting
the INVITE, put its call-id into a
DB table (to keep only the
"active" session) together with a
lifetime / expiration time. When
getting a CANCEL, update the table
(set lifetime to 0), to know it is
terminated. And use an simple
external script that keeps
scanning the DB for (1) sending
487 Terminated via MI if the
record has 0 lifetime or (2) send
a 408 Timeout via MI if the
lifetime exceeded.<br>
In a similar way you can handle
the BYE - send back 200OK for the
BYE and set 0 in lifetime, to send
a 487 canceled back <br>
<br>
Regards,<br>
</font>
<pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="https://www.opensips-solutions.com" target="_blank" moz-do-not-send="true">https://www.opensips-solutions.com</a>
OpenSIPS Summit 27-30 Sept 2022, Athens
<a href="https://www.opensips.org/events/Summit-2022Athens/" target="_blank" moz-do-not-send="true">https://www.opensips.org/events/Summit-2022Athens/</a></pre>
<div>On 10/10/22 4:33 PM, Ryzhik
Ivan wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hello!
<div>My opensips version is 3.1
with tm,dialog and rtpengine
modules.</div>
<div>On incoming INVITE i'm
creating an early dialog with
183 replies and i'm playing
audio to caller with
rtpengine, no t_relay() on
this step, OS is acting as UAS
endpoint.<br>
If the caller cancels the
invite with a CANCEL message -
all works great.<br>
But some users terminate
dialog with BYE message.<br>
1) on BYE with to-tag OS can't
find dialog with
match_dialog(), because to-tag
presents.<br>
2) if i use
load_dialog_ctx($ci) - it is
possible to handle BYE.<br>
3) in early dialog termination
with BYE we also need to send
final response to the INVITE
transaction. <br>
<br>
Maybe I did something wrong,
but I can't handle the final
response to INVITE in this
case.<br>
</div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
Users mailing list
<a href="mailto:Users@lists.opensips.org" target="_blank" moz-do-not-send="true">Users@lists.opensips.org</a>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank" moz-do-not-send="true">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</body>
</html>