Module: sip-router
Branch: sr_3.0
Commit: f90397b76e48f33386175d298326143311be48cb
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=f90397b…
Author: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Committer: Andrei Pelinescu-Onciul <andrei(a)iptel.org>
Date: Thu Mar 25 22:04:44 2010 +0100
core: fix return not working inside a while() loop
Reported-by: Juha Heinanen jh tutpro com
Closes: FlySpray#46.
(cherry picked from commit 0581efe06a8fb0ffe15542c343ae7ac0bc20cbbb)
---
action.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/action.c b/action.c
index ddbf445..4edf023 100644
--- a/action.c
+++ b/action.c
@@ -1116,7 +1116,7 @@ match_cleanup:
flags=0;
rve=(struct rval_expr*)a->val[0].u.data;
ret=1;
- while(!(flags & BREAK_R_F) &&
+ while(!(flags & (BREAK_R_F|RETURN_R_F|EXIT_R_F)) &&
(rval_expr_eval_int(h, msg, &v, rve) == 0) && v){
i++;
if (unlikely(i > cfg_get(core, core_cfg, max_while_loops))){
@@ -1131,7 +1131,7 @@ match_cleanup:
ret=run_actions(h, (struct action*)a->val[1].u.data, msg);
flags|=h->run_flags;
h->run_flags &= ~BREAK_R_F; /* catch breaks, but let
- returns passthrough */
+ returns pass-through */
}
}
break;