Hi All.
I'm using ser-0.8.99-dev21 and I'm trying to create a module which will query MySQL to see if the number dialed is in a table of unassigned DIDs. The reason is that we use a third party for PSTN access and they assign us DIDs. If a DID is dialed that is not assigned to a ser subscriber our sip proxy routes the caller to the PSTN gateway.
But the PSTN gateway provider sees the DID as belonging to our sip proxy so they route it right back to us. And we get in a loop.
I've basically got my custom ser module working but there is a bug that I cannot find. This modules exports a single function called "is_did_unassigned()".
The bug is this - when I dial a number that is unassigned is_did_unassigned() returns "0". But if I dial a number on the PSTN the call to "is_did_unassigned()" hangs. So it appears that when the MySQL query returns zero rows the module freezes.
My question is this - can someone give the attached source code a quick look to see what I've messed up. Please be nice - this is my first stab at ser modules and I'm still very unclear on all the db abstractions.
The MySQL table looks like this
CREATE TABLE unassigned_dids (username char(10))
My ser.cfg looks like this:
loadmodule "/usr/local/lib/ser/modules/dbdid.so" modparam("dbdid", "db_url", "mysql://ser:heslo@localhost/ser")
route { if (!lookup("location")) {
if (isflagset(31)) {
# Send to voicemail route(5);
} else if (does_uri_exist()) {
sl_send_reply("480", "Temporarily Unavailable");
} else if (is_did_unassigned()) {
# User Does Not Exist, but the DID is ours sl_send_reply("480", "Temporarily Unavailable");
} else if (uri=~"^sip:[0-9]{10}@") {
# Send to PSTN Gateway route(3);
} else {
sl_send_reply("404", "User Not Found"); };
break; }; }
And finally the code for the custom module which provided the "is_did_unassigned()" function is attached.
Regards, Paul
__________________________________ Do you Yahoo!? Yahoo! Mail - Find what you need with new enhanced search. http://info.mail.yahoo.com/mail_250