Hi,
I’m using kamailio’s silo module to store offline messages in it. I set extra_hdrs modparam to e.g. : ‘Resent-from-silo’ so the clients get information that the message has arrived directly (immediatelly) from the sender or it was stored offline and comes from silo. So the problem is the following:
* if receiver’s socket is broken (e.g. airplane mode on mobile) and kamailio ‘thinks’ it is registered, server tries to send the message * message will be timed out and based on config it will be stored in silo. * the next step is to check if receiver is registered or not (since the client can re-register during 30sec until the message has timed out) * If client is registered, kamailio tries to send the message immediately with m_dump(). * If the receiver’s connection is still broken, the message will be timed out and store in silo. * In every store, a new ‘resent’ extra_hdrs value is appended.
When extra_hdrs length reaches 1024 bytes, the m_dump will fail and it blocks the dumping of messages to the given receiver.
Question: can extra_hdrs value be removed before store? Or what can be the solution not to duplicate the extra_hdrs value in some bad network situation?
Peter
Hello,
the messages are stored only if m_store() is called, check your config and be sure you do not call it again for a message that was initiated from msilo.
Cheers, Daniel
On 10.03.23 12:17, Dr. Barabás Péter wrote:
Hi,
I’m using kamailio’s silo module to store offline messages in it. I set extra_hdrs modparam to e.g. : ‘Resent-from-silo’ so the clients get information that the message has arrived directly (immediatelly) from the sender or it was stored offline and comes from silo.
So the problem is the following:
- if receiver’s socket is broken (e.g. airplane mode on mobile) and kamailio ‘thinks’ it is registered, server tries to send the message
- message will be timed out and based on config it will be stored in silo.
- the next step is to check if receiver is registered or not (since the client can re-register during 30sec until the message has timed out)
- If client is registered, kamailio tries to send the message immediately with m_dump().
- If the receiver’s connection is still broken, the message will be timed out and store in silo.
- In every store, a new ‘resent’ extra_hdrs value is appended.
When extra_hdrs length reaches 1024 bytes, the m_dump will fail and it blocks the dumping of messages to the given receiver.
Question: can extra_hdrs value be removed before store? Or what can be the solution not to duplicate the extra_hdrs value in some bad network situation?
Peter
Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
Thanks. The message is stored again in failure route with m_store(), since we do not want that message will be lost. When user registers again, the message can be dumped. As i see when kamailio send the stored message with m_dump the record has disappeared from table. And in failure route the m_store put it into db again.
Peter
Daniel-Constantin Mierla miconda@gmail.com (időpont: 2023. márc. 10., P, 16:45) ezt írta:
Hello,
the messages are stored only if m_store() is called, check your config and be sure you do not call it again for a message that was initiated from msilo.
Cheers, Daniel On 10.03.23 12:17, Dr. Barabás Péter wrote:
Hi,
I’m using kamailio’s silo module to store offline messages in it. I set extra_hdrs modparam to e.g. : ‘Resent-from-silo’ so the clients get information that the message has arrived directly (immediatelly) from the sender or it was stored offline and comes from silo.
So the problem is the following:
- if receiver’s socket is broken (e.g. airplane mode on mobile) and
kamailio ‘thinks’ it is registered, server tries to send the message
- message will be timed out and based on config it will be stored in
silo.
- the next step is to check if receiver is registered or not (since
the client can re-register during 30sec until the message has timed out)
- If client is registered, kamailio tries to send the message
immediately with m_dump().
- If the receiver’s connection is still broken, the message will be
timed out and store in silo.
- In every store, a new ‘resent’ extra_hdrs value is appended.
When extra_hdrs length reaches 1024 bytes, the m_dump will fail and it blocks the dumping of messages to the given receiver.
Question: can extra_hdrs value be removed before store? Or what can be the solution not to duplicate the extra_hdrs value in some bad network situation?
Peter
Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
-- Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference - June 5-7, 2023 - www.kamailioworld.com Kamailio Advanced Training - Online - March 27-30, 2023 - www.asipto.com