[SR-Users] Kamailio htable mod-init route: Main process exited before writing to pipe

Daniel-Constantin Mierla miconda at gmail.com
Mon Oct 2 10:17:45 CEST 2017


Hello,

this should be looked at and enhanced somehow to be supported.

An workaround would be to use a lua script via app_lua to do it. Or use
rtimer or timer module to do an execution with a condition on a $var(...)
to be executed only once.

Cheers,
Daniel

On Thu, Sep 28, 2017 at 10:14 PM, George Diamantopoulos <
georgediam at gmail.com> wrote:

> Never mind, I'm certain by now:
>
> http://sip-router.1086192.n5.nabble.com/DB-select-htable-
> mod-init-doesn-t-work-td127717.html
> https://lists.kamailio.org/pipermail/sr-dev/2013-February/018484.html
>
> On 28 September 2017 at 22:18, George Diamantopoulos <georgediam at gmail.com
> > wrote:
>
>> Also, I' found this post by Daniel in 2014:
>>
>> https://lists.kamailio.org/pipermail/sr-users/2014-May/083155.html
>>
>> To quote:
>> > Indeed, the db connection is not initialized at the time of executing
>> > event_route[htable:mod-init]. This is executed after all modules are
>> > initialized, but the sqlops connections are initialized in child init.
>>
>> So maybe this is the case for 5.0.3 as well? sqlops functions can't be
>> used in event_route[htable:mod-init] yet?
>>
>>
>> On 28 September 2017 at 20:18, George Diamantopoulos <
>> georgediam at gmail.com> wrote:
>>
>>> Hello,
>>>
>>> I've tested again, this time including a single sql_pvquery function in
>>> the event-route. Kamailio will also exit with "daemonize(): Main process
>>> exited before writing to pipe" in this simpler case.
>>>
>>> In the documentation, it is stated that: The event route is executed
>>> only once, after core and module initialization, <emphasis>but before
>>> Kamailio forks any child processes</emphasis>.
>>>
>>> Does this mean that I don't have (perhaps) access to pseudovariables during execution of this route? Is this the reason why kamailio exits prematurely?
>>>
>>> Thanks,
>>>
>>> George
>>>
>>>
>>> On 26 September 2017 at 15:37, George Diamantopoulos <
>>> georgediam at gmail.com> wrote:
>>>
>>>> I forgot to mention, I'm using Kamailio 5.0.3 on debian "stretch".
>>>>
>>>> On 26 September 2017 at 14:40, George Diamantopoulos <
>>>> georgediam at gmail.com> wrote:
>>>>
>>>>> Hello all,
>>>>>
>>>>> I've been trying to utilise event_route[htable:mod-init] in order to
>>>>> load information from the database into an htable on startup. However,
>>>>> Kamailio exits with an error for no obvious (to me) reason. Here's the log
>>>>> output:
>>>>>
>>>>> DEBUG: htable [htable.c:226]: child_init(): rank is (-127)
>>>>> DEBUG: htable [htable.c:259]: child_init(): executing
>>>>> event_route[htable:mod-init] (2)
>>>>> DEBUG: <core> [core/parser/msg_parser.c:600]: parse_msg(): SIP
>>>>> Request:
>>>>> DEBUG: <core> [core/parser/msg_parser.c:602]: parse_msg():  method:
>>>>> <OPTIONS>
>>>>> DEBUG: <core> [core/parser/msg_parser.c:604]: parse_msg():  uri:     <
>>>>> sip:you at kamailio.org>
>>>>> DEBUG: <core> [core/parser/msg_parser.c:606]: parse_msg():  version:
>>>>> <SIP/2.0>
>>>>> DEBUG: <core> [core/parser/parse_via.c:2639]: parse_via(): end of
>>>>> header reached, state=2
>>>>> DEBUG: <core> [core/parser/msg_parser.c:491]: parse_headers(): Via
>>>>> found, flags=2
>>>>> DEBUG: <core> [core/parser/msg_parser.c:493]: parse_headers(): this
>>>>> is the first via
>>>>> ERROR: <core> [core/daemonize.c:303]: daemonize(): Main process exited
>>>>> before writing to pipe
>>>>>
>>>>> And here's the routing block in kamailio.cfg. What I need to do is get
>>>>> the username for all non-expired contacts in the "location" table, perform
>>>>> a query on another database for each one of them and store the result in an
>>>>> htable:
>>>>>
>>>>> event_route[htable:mod-init] {
>>>>>
>>>>>     sql_pvquery("ck", "select username from location where now() <=
>>>>> expires", "$avp(registered_ng)");
>>>>>
>>>>>     $var(i) = 0;
>>>>>     while ( $(avp(registered_ng)[$var(i)]) != $null ) {
>>>>>         sql_pvquery("ca", "select property from tablename where
>>>>> username = $(avp(registered_ng)[$var(i)])", "$var(ng_property)");
>>>>>         $sht(isnguser=>$var(ng_property)) = 1;
>>>>>         $var(i) = $var(i) + 1;
>>>>>         pv_unset("$var(ng_property)");
>>>>>     }
>>>>>
>>>>>     pv_unset("$var(i)");
>>>>> }
>>>>>
>>>>> Any hints as to what I might be doing wrong? Thanks!
>>>>>
>>>>> Best regards,
>>>>> George
>>>>>
>>>>
>>>>
>>>
>>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
>


-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20171002/10cf5f66/attachment.html>


More information about the sr-users mailing list