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_resolve_wrapper(struct peer *);
|
||||||
|
|
||||||
static void outgoing_retry(struct outgoing *outgoing) {
|
static void outgoing_retry(struct outgoing *outgoing) {
|
||||||
|
outgoing->peer.fd = -1;
|
||||||
uint32_t delay = wakeup_get_retry_delay_ms(++outgoing->attempt);
|
uint32_t delay = wakeup_get_retry_delay_ms(++outgoing->attempt);
|
||||||
LOG(outgoing->id, "Will retry in %ds", delay / 1000);
|
LOG(outgoing->id, "Will retry in %ds", delay / 1000);
|
||||||
outgoing->peer.event_handler = outgoing_resolve_wrapper;
|
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 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) {
|
static void wakeup_handler(struct peer *peer) {
|
||||||
struct wakeup *wakeup = container_of(peer, struct wakeup, 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(read(wakeup->peer.fd, &events, sizeof(events)) == sizeof(events));
|
||||||
assert(events == 1);
|
assert(events == 1);
|
||||||
|
|
||||||
peer_close(&wakeup->peer);
|
|
||||||
peer_call(wakeup->inner_peer);
|
peer_call(wakeup->inner_peer);
|
||||||
list_del(&wakeup->wakeup_list);
|
wakeup_del(wakeup);
|
||||||
free(wakeup);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wakeup_init() {
|
void wakeup_init() {
|
||||||
@@ -35,7 +39,7 @@ void wakeup_init() {
|
|||||||
void wakeup_cleanup() {
|
void wakeup_cleanup() {
|
||||||
struct wakeup *iter, *next;
|
struct wakeup *iter, *next;
|
||||||
list_for_each_entry_safe(iter, next, &wakeup_head, wakeup_list) {
|
list_for_each_entry_safe(iter, next, &wakeup_head, wakeup_list) {
|
||||||
free(iter);
|
wakeup_del(iter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user