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(a)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(a)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(a)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@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
>