/* Called when the event engine detects activity on the UPing socket */
static void uping_echo_callback(struct Event* ev)
{
- assert(ev_type(ev) == ET_READ);
+ assert(ev_type(ev) == ET_READ || ev_type(ev) == ET_ERROR);
uping_echo();
}
assert(0 != ev_socket(ev));
assert(0 != s_data(ev_socket(ev)));
- pptr = s_data(ev_socket(ev));
+ pptr = (struct UPing*) s_data(ev_socket(ev));
Debug((DEBUG_SEND, "uping_read_callback called, %p (%d)", pptr,
ev_type(ev)));
if (!pptr->freeable)
MyFree(pptr); /* done with it, finally */
} else {
- assert(ev_type(ev) == ET_READ);
+ assert(ev_type(ev) == ET_READ || ev_type(ev) == ET_ERROR);
uping_read(pptr); /* read uping response */
}
assert(0 != ev_timer(ev));
assert(0 != t_data(ev_timer(ev)));
- pptr = t_data(ev_timer(ev));
+ pptr = (struct UPing*) t_data(ev_timer(ev));
Debug((DEBUG_SEND, "uping_sender_callback called, %p (%d)", pptr,
ev_type(ev)));
assert(0 != ev_timer(ev));
assert(0 != t_data(ev_timer(ev)));
- pptr = t_data(ev_timer(ev));
+ pptr = (struct UPing*) t_data(ev_timer(ev));
Debug((DEBUG_SEND, "uping_killer_callback called, %p (%d)", pptr,
ev_type(ev)));
{
assert(0 != pptr);
- timer_add(&pptr->sender, uping_sender_callback, (void*) pptr,
+ timer_add(timer_init(&pptr->sender), uping_sender_callback, (void*) pptr,
TT_PERIODIC, 1);
- timer_add(&pptr->killer, uping_killer_callback, (void*) pptr,
+ timer_add(timer_init(&pptr->killer), uping_killer_callback, (void*) pptr,
TT_RELATIVE, UPINGTIMEOUT);
pptr->freeable |= UPING_PENDING_SENDER | UPING_PENDING_KILLER;