]> git.meshlink.io Git - meshlink/blobdiff - src/event.c
Update mesh->loop.now right after select() returns.
[meshlink] / src / event.c
index 61e6d8d7365893f53fffe50c4c6e07ee3b46ca22..245e39ecb45f34a62d848071a7b251880a821e6d 100644 (file)
@@ -108,15 +108,8 @@ void io_del(event_loop_t *loop, io_t *io) {
 }
 
 void timeout_add(event_loop_t *loop, timeout_t *timeout, timeout_cb_t cb, void *data, struct timeval *tv) {
-       if(!timeout->cb)
-               timeout->tv = (struct timeval) {
-               0, 0
-       };
-
        timeout->cb = cb;
-
        timeout->data = data;
-
        timeout->node.data = timeout;
 
        timeout_set(loop, timeout, tv);
@@ -225,6 +218,7 @@ bool event_loop_run(event_loop_t *loop, pthread_mutex_t *mutex) {
        fd_set readable;
        fd_set writable;
 
+
        while(loop->running) {
                gettimeofday(&loop->now, NULL);
                struct timeval diff, it, *tv = NULL;
@@ -274,6 +268,8 @@ bool event_loop_run(event_loop_t *loop, pthread_mutex_t *mutex) {
                        pthread_mutex_lock(mutex);
                }
 
+               gettimeofday(&loop->now, NULL);
+
                if(n < 0) {
                        if(sockwouldblock(errno)) {
                                continue;