Clean up wakeup teardown.
This commit is contained in:
@@ -45,6 +45,7 @@ static void outgoing_resolve(struct outgoing *);
|
||||
static void outgoing_resolve_wrapper(struct peer *);
|
||||
|
||||
static void outgoing_retry(struct outgoing *outgoing) {
|
||||
outgoing->peer.fd = -1;
|
||||
uint32_t delay = wakeup_get_retry_delay_ms(++outgoing->attempt);
|
||||
LOG(outgoing->id, "Will retry in %ds", delay / 1000);
|
||||
outgoing->peer.event_handler = outgoing_resolve_wrapper;
|
||||
|
||||
@@ -16,6 +16,12 @@ struct wakeup {
|
||||
|
||||
static struct list_head wakeup_head = LIST_HEAD_INIT(wakeup_head);
|
||||
|
||||
static void wakeup_del(struct wakeup *wakeup) {
|
||||
peer_close(&wakeup->peer);
|
||||
list_del(&wakeup->wakeup_list);
|
||||
free(wakeup);
|
||||
}
|
||||
|
||||
static void wakeup_handler(struct peer *peer) {
|
||||
struct wakeup *wakeup = container_of(peer, struct wakeup, peer);
|
||||
|
||||
@@ -23,10 +29,8 @@ static void wakeup_handler(struct peer *peer) {
|
||||
assert(read(wakeup->peer.fd, &events, sizeof(events)) == sizeof(events));
|
||||
assert(events == 1);
|
||||
|
||||
peer_close(&wakeup->peer);
|
||||
peer_call(wakeup->inner_peer);
|
||||
list_del(&wakeup->wakeup_list);
|
||||
free(wakeup);
|
||||
wakeup_del(wakeup);
|
||||
}
|
||||
|
||||
void wakeup_init() {
|
||||
@@ -35,7 +39,7 @@ void wakeup_init() {
|
||||
void wakeup_cleanup() {
|
||||
struct wakeup *iter, *next;
|
||||
list_for_each_entry_safe(iter, next, &wakeup_head, wakeup_list) {
|
||||
free(iter);
|
||||
wakeup_del(iter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user