[sr-dev] git:master: core: Setting max_while_loops to zero now allows infinite loops

Peter Dunkley peter.dunkley at crocodile-rcs.com
Fri Feb 24 00:10:46 CET 2012


Module: sip-router
Branch: master
Commit: d4396716a7f0c0472f37e4ce7c39e04394925583
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=d4396716a7f0c0472f37e4ce7c39e04394925583

Author: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Date:   Thu Feb 23 22:56:46 2012 +0000

core: Setting max_while_loops to zero now allows infinite loops

- I wanted to be able to have a Kamailio process running a configuration route
  all the time (sleeping itself using usleep).  To do this I use rtimer to
  create a mode one timer (with timeout of one second - so the route is run
  very shortly after Kamailio starts).
- In the route for this timer I had a while(1) loop, but the max_while_loops
  (defaulting to 100) meant that the loop wasn't really infinite.
- Now setting max_while_loops to zero disables the infinite loop check.

---

 action.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/action.c b/action.c
index 6d22bf2..e044f65 100644
--- a/action.c
+++ b/action.c
@@ -1401,7 +1401,9 @@ match_cleanup:
 			ret=1;
 			while(!(flags & (BREAK_R_F|RETURN_R_F|EXIT_R_F)) &&
 					(rval_expr_eval_int(h, msg, &v, rve) == 0) && v){
-				i++;
+				if (cfg_get(core, core_cfg, max_while_loops) > 0)
+					i++;
+
 				if (unlikely(i > cfg_get(core, core_cfg, max_while_loops))){
 					LOG(L_ERR, "ERROR: runaway while (%d, %d): more then"
 								" %d loops\n", 




More information about the sr-dev mailing list