diff options
Diffstat (limited to 'common-session.c')
-rw-r--r-- | common-session.c | 11 |
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) { |