Hil,
Please find the wiki link below:
http://www.kamailio.org/dokuwiki/doku.php/development:write-module
I had one more query on the psuedo variable. In the config file i am
try to invoke a method as below:
if (!mymodulesave("mymodule",
"$au"))
where "mymodule" is the database name of my new module.
$au is the username pseudo variable.
The function prototype i have used in mymodule.h is as below:
int infygeosave(struct sip_msg* msg, str* _d, char*
username)
when i print the username variable in the method i am getting the
value as $au itself. Should i just pass the argument as (.., $au);
rather than doing (.., "$au");
Please let me know your inputs.
Regards,
Jagdeep S
On 12/6/11, Daniel-Constantin Mierla <miconda(a)gmail.com> wrote:
Hello,
On 12/6/11 5:28 AM, Jagdeep S wrote:
Hi Daniel,
Thanks for the reply. I was just seeing differences in various module
initialization over the weekend and saw that the exports structure was
slightly different from what i had taken from the template in the
kamailio website.
ok, probably that doc is for older version. Was it a wiki page?
If you
can give the link, we can update it and make a note about versions and
validity of the content.
Cheers,
Daniel
I think the extra parameters/methods added in
the
latest versions were missing in my exports structure due to which my
initialization used to fail. And during initialization i pass "pseudo
variable" as argument to my method but i was not having the pseudo
variable member in the structure. Since it was not initialized the db
initialization failed.
I just changed the following structure from:
struct module_exports exports= {
"mymodule", /* module's name */
DEFAULT_DLFLAGS, /*!< dlopen flags */
cmds, /* exported functions */
mod_params, /* param exports */
mod_stats, /* exported statistics */
mod_init, /* module initialization function */
0, /* reply processing function FIXME Not sure when this
is used */
mod_destroy, /* Destroy function */
child_init /* per-child init function */
};
to the following structure:
struct module_exports exports= {
"mymodule", /* module's name */
DEFAULT_DLFLAGS, /* dlopen flags */
cmds, /* Exported functions */
mod_params, /* Exported parameters */
mod_stats, /* exported statistics */
0, /* exported MI functions */
0, /* exported pseudo-variables */
0, /* extra processes */
mod_init, /* module initialization function */
0, /* response function */
mod_destroy,/* destroy function */
child_init /* child initialization function */
};
Now i am able to start the kamailio server with db initialized :)
Anyways thanks for the response.
Regards,
Jagdeep S
On 12/6/11, Daniel-Constantin Mierla<miconda(a)gmail.com> wrote:
Hello,
can you paste here the mod_init() and child_init() functions and say
which one is line 239 (inside child init)? I expect some db init step
for your module was not done.
Also, the output of 'bt full' might be useful.
Cheers,
Daniel
On 12/3/11 6:35 AM, Jagdeep S wrote:
Hi All,
I am trying to create a new module under the kamailio source base, as
part of understanding the framework. But when i start the Kamailio, i
am seeing a core dump occuring when my new module is getting initiated
and when the database is getting initialised. PFA the files attached
containing the config file and source files used for creating module
files.
I am using the "DEFAULT_DB_URL" as database uri. The core dump
backtrace shows that the module init fails at the following point:
(gdb) bt
#0 0x00000000 in ?? ()
#1 0x00ef390d in child_init (rank=9172352) at my_mod.c:239
#2 0x081226be in init_mod (m=0xb7515a04) at sr_module.c:922
#3 0x08122630 in init_mod (m=0xb7515c78) at sr_module.c:919
The line 239 in my module file points to the child-init function which
initializes the database connectivity ==> "mymod_dbh =
mymod_dbf.init(&db_url);"
I have written the module using the template provided under the
kamailio website. All the parameters are defined properly. Have no
idea as to what is going wrong.
I tried debugging the core dump using gdb but of no much help. I am
not able to run the gdb during runti sr-users(a)lists.sip-router.orgme
due to which i am not able to add break points and check. Not sure
what the problem is. That's why i generated core dump file and
analysed the backtrace, but i can't add break points and run it again
as the executable is not involved.
Can anyone please let me know what is the issue is or any pointers if
i have missed some part of the code due to which the connectivity to
db is not happening. Due to this i am not able to proceed further with
the testing of my new module. Also any tips on how to do get the gdb
debugging during runtime will also be very helpful.
Any help is appreciated :).
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users --
Daniel-Constantin Mierla --
http://www.asipto.com
http://linkedin.com/in/miconda --
http://twitter.com/miconda
--
Daniel-Constantin Mierla --
http://www.asipto.com
http://linkedin.com/in/miconda --
http://twitter.com/miconda
--
Jagdeep S