<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<font face="monospace">Hi Takeshi,<br>
<br>
Thanks for the note here, I will check the PR.<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 Bootcamp 5-16 Dec 2022, online
<a class="moz-txt-link-freetext" href="https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/">https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/</a></pre>
<div class="moz-cite-prefix">On 10/22/22 12:53 PM, mayamatakeshi
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CABaNFCYHiCLJPCBeOcE3=UJ4Hij-y63zBxGdzqse8kHnSTDM7g@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>Hi,</div>
<div>I've been following this discussion as I have a similar use
case.</div>
<div>I have created a PR offering a new function
t_reply_by_callid for the module tm to simplify this:</div>
<div> <a href="https://github.com/OpenSIPS/opensips/pull/2937"
moz-do-not-send="true">https://github.com/OpenSIPS/opensips/pull/2937</a><br>
</div>
<div><br>
</div>
<div>Regards,</div>
<div>Takeshi</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Oct 20, 2022 at 4:04
PM Bogdan-Andrei Iancu <<a
href="mailto:bogdan@opensips.org" moz-do-not-send="true">bogdan@opensips.org</a>>
wrote:<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">Ivan,<br>
<br>
Actually a simpler approach will be to use
t_wait_for_new_branches() instead of that t_write
function, it should do the same trick (postponing the
deletion of the transaction), but without any side
effects.<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 Bootcamp 5-16 Dec 2022, online
<a href="https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/" target="_blank" moz-do-not-send="true">https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/</a></pre>
<div>On 10/19/22 10:21 AM, Ryzhik Ivan wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Sorry, I mean no sleep, i mean async(
sleep($var(wait_time)), after_sleep );
<div>Regards, Ivan.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">вт, 18 окт. 2022 г.
в 14:42, 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,<br>
<br>
yes, call it before ending the REQUEST route.
I'm 100% the transaction is not deleted before
the end of the route. And try to use the unix
sock flavor for the function, not the fifo one.<br>
<br>
DO NOT use the sleep, you will block your whole
opensips.<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 Bootcamp 5-16 Dec 2022, online
<a href="https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/" target="_blank" moz-do-not-send="true">https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/</a></pre>
<div>On 10/17/22 11:56 AM, Ryzhik Ivan wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi, did you mean that i must call
t_write_req once before <span
style="color:rgb(0,0,0);font-family:Helvetica,Arial;font-size:12px;text-align:justify">REQUEST_ROUTE
is finished? In this case the transaction
was removed.</span>
<div><span
style="font-family:Helvetica,Arial;font-size:12px;text-align:justify">"</span><span
style="font-family:monospace">even if you
do not have to actually write anything to
outer world - just fake it.</span><span
style="font-family:Helvetica,Arial;font-size:12px;text-align:justify">"
- i must use fifo and i must read data
from it, in else we got:<br>
</span>ERROR:tm:write_to_fifo: nobody
listening on [/tmp/moh.fifo] fifo for
reading!<br>
ERROR:tm:t_write_req: write_to_fifo failed<br>
</div>
<div>And last question is may I use sleep(20)
at the end of route to keep transaction? or
can i use modparam("tm", "wt_timer", 20)?</div>
<div>Regards, Ivan</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">пн, 17 окт.
2022 г. в 09:38, 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>
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
href="https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_write_req"
target="_blank" moz-do-not-send="true">https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_write_req</a><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/13/22 2:45 PM, Ryzhik Ivan
wrote:<br>
</div>
<blockquote type="cite">
<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"
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">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>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" target="_blank"
moz-do-not-send="true">Users@lists.opensips.org</a><br>
<a
href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"
rel="noreferrer" target="_blank" moz-do-not-send="true">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</blockquote>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</body>
</html>