summaryrefslogtreecommitdiff
path: root/common-session.c
diff options
context:
space:
mode:
Diffstat (limited to 'common-session.c')
-rw-r--r--common-session.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/common-session.c b/common-session.c
index 164dc85..cf5ff07 100644
--- a/common-session.c
+++ b/common-session.c
@@ -137,14 +137,17 @@ void common_session_init(int sock_in, int sock_out) {
TRACE(("leave session_init"))
}
-void session_loop(void(*loophandler)()) {
+void session_loop() {
fd_set readfd, writefd;
struct timeval timeout;
int val;
+ assert(ses.recursion_count <= 1);
+ ses.recursion_count++;
+
/* main loop, select()s for all sockets in use */
- for(;;) {
+ while (!ses.exit_recursion) {
timeout.tv_sec = select_timeout();
timeout.tv_usec = 0;
@@ -244,8 +247,8 @@ void session_loop(void(*loophandler)()) {
}
} /* for(;;) */
-
- /* Not reached */
+ ses.recursion_count--;
+ ses.exit_recursion = 0;
}
static void cleanup_buf(buffer **buf) {