Description

I see unexpected return code from route if there is no explicit return and switch-case block.

Reproduction

Here is simple configuration part:

route(TEST_ROUTE_WITH_SWITCH);
xlog("L_WARN", "TEST_ROUTE_WITH_SWITCH result $rc\n");
...
route[TEST_ROUTE_WITH_SWITCH] {
  $var(a) = "a";
  switch ($var(a)) {
    case "a":
    case "b":
      $var(b) = $var(a);
      break;
    default:
      $var(c) = $var(a);
    }

  # must be optional according to documentation:
  # https://www.kamailio.org/wiki/cookbooks/5.3.x/core#return
  # > If no value is specified, or a route reaches its end without executing a return statement, it returns 1.
  #
  # return 1;
}

Log:

WARNING: <script>: TEST_ROUTE_WITH_SWITCH result 0

At the same time if there is no switch-block, return code is 1 as expected:

route[TEST_ROUTE_WITH_SWITCH] {
  $var(a) = "a";
}

Log:

WARNING: <script>: TEST_ROUTE_WITH_SWITCH w/o switch-case result 1

Additional Information

$ ./build/sbin/kamailio -v
version: kamailio 5.7.5 (x86_64/linux) b47500-dirty
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: b47500 -dirty
compiled on 22:02:13 Nov  9 2024 with /usr/bin/gcc 11.3.1
Oracle Linux 9


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <kamailio/kamailio/issues/4088@github.com>