Hi,

for a project I need to make sure, I have a setup where I get
mirror-traffic into Kamailio which has to do something with it. To
work correctly, I need to make sure, the initial INVITE is processed
correctly before any reply to the same call. So I thought I use lock()
and unlock() for it.

This is what the relevant kamailio.cfg part looks like:

request_route {
  xlog("L_INFO", "Got new packet $rm: $si => $Ri\n");
  route(li);
}

onreply_route {
  xlog("L_INFO", "Got new packet $rm: $si => $Ri - Reply Code $rs\n");
  route(li);
}

route[magic] {
  lock("$ci");
  xlog("L_INFO", "Obtained lock, calling lua...\n");
  if(!lua_run("handle_packet")) {
    xlog("L_ERR", "SCRIPT: failed to execute lua function!\n");
  }
  unlock("$ci");
  xlog("L_INFO", "Lua finished, released lock...\n");

  drop;
  exit;
}



And this is what the log says:

Jun 28 13:27:04 busch /usr/sbin/kamailio[18836]: INFO: <script>: Got
new packet INVITE: 172.20.21.247 => 172.20.21.4
Jun 28 13:27:04 busch /usr/sbin/kamailio[18836]: INFO: <script>:
Obtained lock, calling lua...
Jun 28 13:27:04 busch /usr/sbin/kamailio[18836]: INFO: app_lua
[app_lua_sr.c:98]: lua_sr_log(): some logging
Jun 28 13:27:04 busch /usr/sbin/kamailio[18837]: INFO: <script>: Got
new packet INVITE: 172.20.21.4 => 172.20.21.247 - Reply Code 407
Jun 28 13:27:04 busch /usr/sbin/kamailio[18837]: INFO: <script>:
Obtained lock, calling lua...
Jun 28 13:27:04 busch /usr/sbin/kamailio[18837]: INFO: <script>: Lua
finished, released lock...
Jun 28 13:27:04 busch /usr/sbin/kamailio[18836]: INFO: app_lua
[app_lua_sr.c:98]: lua_sr_log(): some more logging




As far as I understand the documentation, the second packet should
wait for the lock on the Call-ID before executing the lua function. So
process 18836 should finish its lua execution before 18837 can do
anything further. Did I completely misunderstand the lock() function?

I'm using Kamailio 5.0.2.

Thanks for helping me understand what Kamailio is doing here.

Best Regards,
Sebastian

_______________________________________________
Kamailio (SER) - Users Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to