From a4986182dcad508c17a6eb8fd3e556f18cfaa349 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 21 Oct 2012 00:13:59 +0200 Subject: Implement retransmits of important updates --- ffd/announce.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'ffd/announce.c') diff --git a/ffd/announce.c b/ffd/announce.c index 00bd78c..2e54725 100644 --- a/ffd/announce.c +++ b/ffd/announce.c @@ -123,7 +123,7 @@ static inline void seqno_update(ffd_announce_t *announce) { next = cur; fprintf(stderr, "debug: update matches seqno request, forwarding\n"); - ffd_send_update(NULL, req->neigh, announce, false); + ffd_update_enqueue(&announce->node, announce->type, announce->key, req->neigh, true); ffd_neigh_unref(req->neigh); free(req); } @@ -145,7 +145,7 @@ void ffd_announce_update(ffd_announce_t *announce) { if (((announce->last_metric == 0xffff) != (announce->metric.metric == 0xffff)) || diff <= -1024 || diff >= 384) { fprintf(stderr, "info: announce metric has changed significantly, sending updates\n"); - ffd_send_update(NULL, NULL, announce, false); + ffd_update_enqueue(&announce->node, announce->type, announce->key, NULL, announce->metric.metric == 0xffff); } if (announce->selected) @@ -269,11 +269,13 @@ bool ffd_announce_seqno_request(ffd_announce_t *announce, ffd_neigh_t *neigh, ui return false; } -void ffd_announce_seqno_request_free_list(ffd_announce_t *announce) { - ffd_seqno_req_t *req, *next; - for (req = announce->seqno_req_list; req; req = next) { - next = req->next; +void ffd_announce_free(ffd_announce_t *announce) { + ffd_seqno_req_t *req, *req_next; + for (req = announce->seqno_req_list; req; req = req_next) { + req_next = req->next; ffd_neigh_unref(req->neigh); free(req); } + + free(announce); } -- cgit v1.2.3