Fix timers

Fucking hell.  We're still having some event scheduling issues.
This commit is contained in:
Přemysl Eric Janouch 2014-09-20 01:59:41 +02:00
parent 97bcad8a03
commit 01c2bfa5a4
2 changed files with 15 additions and 15 deletions

View File

@ -315,8 +315,8 @@ static bool generator_step (struct app_context *ctx);
struct app_context
{
struct str_map config; ///< User configuration
unsigned connect_timeout; ///< Hard timeout for connect()
unsigned scan_timeout; ///< Hard timeout for service scans
unsigned connect_timeout; ///< Timeout for connect() in sec.
unsigned scan_timeout; ///< Timeout for service scans in sec.
json_t *json_results; ///< The results as a JSON value
const char *json_filename; ///< The filename to write JSON to
@ -604,7 +604,7 @@ end:
static void
unit_start_scan (struct unit *u)
{
poller_timer_set (&u->timeout_event, u->target->ctx->scan_timeout);
poller_timer_set (&u->timeout_event, u->target->ctx->scan_timeout * 1000);
u->fd_event.dispatcher = (poller_fd_fn) on_unit_ready;
unit_update_poller (u, NULL);
}
@ -717,7 +717,7 @@ unit_make (struct target *target, uint32_t ip, uint16_t port,
unit_start_scan (u);
else
{
poller_timer_set (&u->timeout_event, ctx->connect_timeout);
poller_timer_set (&u->timeout_event, ctx->connect_timeout * 1000);
poller_fd_set (&u->fd_event, POLLOUT);
}

22
utils.c
View File

@ -926,21 +926,21 @@ poller_timers_heapify_down (struct poller_timers *self, size_t index)
timer_t *left = self->heap + 2 * index + 1;
timer_t *right = self->heap + 2 * index + 2;
timer_t *largest = parent;
if (left < end && (*left) ->when > (*largest)->when)
largest = left;
if (right < end && (*right)->when > (*largest)->when)
largest = right;
if (parent == largest)
timer_t *lowest = parent;
if (left < end && (*left) ->when < (*lowest)->when)
lowest = left;
if (right < end && (*right)->when < (*lowest)->when)
lowest = right;
if (parent == lowest)
break;
timer_t tmp = *parent;
*parent = *largest;
*largest = tmp;
*parent = *lowest;
*lowest = tmp;
(*parent) ->index = parent - self->heap;
(*largest)->index = largest - self->heap;
index = largest - self->heap;
(*parent)->index = parent - self->heap;
(*lowest)->index = lowest - self->heap;
index = lowest - self->heap;
}
}