From f17f57d516926622e065974fe10c7be0b53ef3b4 Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Fri, 4 Jul 2014 22:07:02 +0100 Subject: [PATCH] Uberdetailed debug information about event loop operations. --- src/event.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/event.c b/src/event.c index f34974206..cdd7eecda 100644 --- a/src/event.c +++ b/src/event.c @@ -24,6 +24,7 @@ #include "net.h" #include "utils.h" #include "xalloc.h" +#include "logger.h" struct timeval now; @@ -67,8 +68,11 @@ static splay_tree_t io_tree = {.compare = (splay_compare_t)io_compare}; static splay_tree_t timeout_tree = {.compare = (splay_compare_t)timeout_compare}; void io_add(io_t *io, io_cb_t cb, void *data, int fd, int flags) { - if(io->cb) + logger(DEBUG_META, LOG_NOTICE, "io_add(%x, %x, %x, %d, %d)", io, cb, data, fd, flags); + if(io->cb) { + logger(DEBUG_META, LOG_NOTICE, "io_add() ignored because of io->cb"); return; + } io->fd = fd; #ifdef HAVE_MINGW @@ -97,11 +101,16 @@ void io_add_event(io_t *io, io_cb_t cb, void *data, WSAEVENT event) { #endif void io_set(io_t *io, int flags) { - if (flags == io->flags) + logger(DEBUG_META, LOG_NOTICE, "io_set(%x, %d)", io, flags); + if (flags == io->flags) { + logger(DEBUG_META, LOG_NOTICE, "io_set() ignored because no-op"); return; + } io->flags = flags; - if (io->fd == -1) + if (io->fd == -1) { + logger(DEBUG_META, LOG_NOTICE, "io_set() ignored because no fd"); return; + } #ifndef HAVE_MINGW if(flags & IO_READ) @@ -125,8 +134,11 @@ void io_set(io_t *io, int flags) { } void io_del(io_t *io) { - if(!io->cb) + logger(DEBUG_META, LOG_NOTICE, "io_del(%x)", io); + if(!io->cb) { + logger(DEBUG_META, LOG_NOTICE, "io_del() ignored because no io->cb"); return; + } io_set(io, 0); #ifdef HAVE_MINGW @@ -135,6 +147,8 @@ void io_del(io_t *io) { event_count--; #endif + if (!splay_search(&io_tree, io)) + logger(DEBUG_META, LOG_NOTICE, "io_del() called with unknown io"); splay_unlink_node(&io_tree, &io->node); io->cb = NULL; } @@ -256,6 +270,7 @@ bool event_loop(void) { fd_set writable; while(running) { + logger(DEBUG_META, LOG_NOTICE, "event_loop() freezing FD sets"); memcpy(&readable, &readfds, sizeof readable); memcpy(&writable, &writefds, sizeof writable); struct timeval diff;