Hello,
I am running kamailio 3.1.3 and I am making some tests with the exec module. I am running a "dummy" script and it worked like a charm. Now, I am testing what happens when the script takes "too much time" to return a result. According to exec module documentation the/ time_to_kill /parameter should take care of it.
*time_to_kill* (INTEGER) /Specifies the longest time a program is allowed to execute. If the time is exceeded, the program is killed. /
BTW ... I am assuming /time /is in milliseconds. I think the documentation should refer the time units.
Apparently kamailio ignores this parameter (or it doesn't work as I am expecting). No matter which value I assign to /time_to_kill/, kamailio doesn't kill the script and waits for the script to finish. In the meanwhile some SIP timers are triggered ... resulting into a failed call.
The test I am doing is quite simple. For incoming INVITEs, use a external script to check the status of a specific test user, if it returns the keyword "busy" sends it to voicemail otherwise route the INVITE to the local user. The test script returns a result after about 8 seconds.
Shouldn't the /time_to_kill/ be triggered and stop the script?
Here goes some relevant parts of my configuration. In attachment I am sending the kamailio log with a debug value of 4.
/# ----- exec params -----/ /modparam("exec", "time_to_kill", 10)/ /# --- exec params end -----/
/#route just to check the exec module route[TESTEXEC] { xlog("L_INFO", "TESTEXEC: Entered ($rU)\n");
if ($rU == "miguel") { $var(calendarTMP)="/root/" + $rU + "_test.pl"; exec_avp("$var(calendarTMP)", "$avp(s:test)"); xlog("L_INFO", "TESTEXEC: Returned value is $avp(s:test)\n");
if ($avp(s:test) == "busy") { $ru = "sip:userbusy@" + ASTSERVIPPORT; # Voicemail route(RELAY); } } xlog("L_INFO", "TESTEXEC: Exiting ($rU)\n"); return; }
/
Regards,
Miguel Baptista