Hello Alex,
thanks for the clarification.
How can I create a transaction in a non-atomic way?
Is t_newtrans() idempotent?
The documentation of tmx.t_flush_flags() says
“Flush the flags from current SIP message into the already created transaction. It makes
sense only in routing block if the transaction was created
via t_newtran() and the flags have been altered since.
It is not needed to execute this function when using t_relay() (or similar tm relay
functions, flags are synchronized automatically in that case).”
This wording is ambiguous:
If a transaction is created with t_newtran(), then a flag is modified, and finally
t_relay() is called, is t_flush_flags() necessary?
Moreover, t_flush_flags() works only in an already created transaction. If it is called
before a transaction is created (with t_newtrans() or
t_relay()) it does nothing, according to the documentation.
Why is t_flush_flags() necessary if a transaction is created with t_newtran(), but not
necessary if the transaction is created with t_relay()?
Greetings
Dilyan
-----Original Message-----
From: Alex Balashov <abalashov(a)evaristesys.com>
Reply-To: Kamailio (SER) - Users Mailing List <sr-users(a)lists.kamailio.org>
To: Kamailio (SER) - Users Mailing List <sr-users(a)lists.kamailio.org>
Subject: [SR-Users] Re: Does tm.t_relay() create a transaction?
Date: 01/20/2023 04:13:32 PM
Hi Дилян,
This is a rather confusing topic in Kamailio.
Yes, t_relay() creates a transaction, provided that the t_relay() call is not unsuccessful
"a priori" (e.g. due to invalid transport, DNS failure,
lack of suitable sending listener, etc).
To create a transaction atomically generally means that the transaction is both created
and utilised as a single operation.
-- Alex
On Jan 20, 2023, at 8:41 AM, Дилян Палаузов
<dpa-kamailio(a)bapha.be> wrote:
Hello,
the documentation for tm.t_newtran() says „This is the only way a script can add a new
transaction in an atomic way.“ Moreover tm.t_send_reply()
“creates the transaction if it does not exist (executing internally t_newtran()) and
sends a stateful reply (executing internally t_reply())”. This
means that only t_newtrans() and t_send_reply() can create transactions in an atomic
way.
The documentation of tm.t_relay() does not say whether the function creates a
transaction. It also does not say what happens if t_reply() is not
called after t_newtrans().
But for tm.t_set_retr() and tm.t_set_retr() is written “If the transaction is already
created (e.g called after t_relay() or in an onreply_route) …”
This suggests that tm.t_relay() does create atomically or not-atomically a transaction.
- What does it mean to create a transaction in a non-atomic way?
- Does tm.t_relay() create a transaction?
Greetings
Dilyan
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to sr-users-leave(a)lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender!
Edit mailing list options or unsubscribe:
--
Alex Balashov
Principal Consultant
Evariste Systems LLC
Web:
https://evaristesys.com
Tel: +1-706-510-6800
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to sr-users-leave(a)lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender!
Edit mailing list options or unsubscribe: