on 5.5 kamailio wiki for core it is stated that return (0) is the same as exit. but that's not true
request_route {
if (route(POS)){ xlog("POS PASS\r\n"); }
if (!route(NEG)){ xlog("NEG PASS\r\n"); }
if (!route(ZERO)) { xlog("ZERO PASS\r\n"); }
xlog("AFTER ZERO\r\n"); send_reply("400","Error"); return; }
route[POS]{ return 1; }
route[NEG]{ return -1; }
route[ZERO] { return 0; }
for example from the config above not only ZERO PASS will be printed but also all the actions after route(ZERO) are still executed.
instead if i replace return 0 with exit in route[ZERO]. this work as expected.