projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Unconditionally remove timeouts from the queue before calling the callback.
[tinc]
/
src
/
event.c
diff --git
a/src/event.c
b/src/event.c
index
5edd3a6
..
33d205a
100644
(file)
--- a/
src/event.c
+++ b/
src/event.c
@@
-41,7
+41,16
@@
static int io_compare(const io_t *a, const io_t *b) {
#ifndef HAVE_MINGW
return a->fd - b->fd;
#else
#ifndef HAVE_MINGW
return a->fd - b->fd;
#else
- return a->event - b->event;
+
+ if(a->event < b->event) {
+ return -1;
+ }
+
+ if(a->event > b->event) {
+ return 1;
+ }
+
+ return 0;
#endif
}
#endif
}
@@
-291,11
+300,9
@@
static struct timeval *get_time_remaining(struct timeval *diff) {
timersub(&timeout->tv, &now, diff);
if(diff->tv_sec < 0) {
timersub(&timeout->tv, &now, diff);
if(diff->tv_sec < 0) {
- timeout->cb(timeout->data);
-
- if(timercmp(&timeout->tv, &now, <)) {
- timeout_del(timeout);
- }
+ timeout_cb_t cb = timeout->cb;
+ timeout_del(timeout);
+ cb(timeout->data);
} else {
tv = diff;
break;
} else {
tv = diff;
break;