diff options
author | Maria Matejka <mq@jmq.cz> | 2021-10-30 15:50:16 +0000 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2021-11-09 19:20:41 +0100 |
commit | 46739f007a8a21c7887a29a465db0c2520fb4a13 (patch) | |
tree | ed72baeb799d80d63638129792c671d9d800ed71 /proto | |
parent | 13ebe7717685aaa64bbbe09a2e6cc0c6da2bd6bd (diff) |
RPKI: Do nothing when protocol is stopping
Diffstat (limited to 'proto')
-rw-r--r-- | proto/rpki/packets.c | 8 | ||||
-rw-r--r-- | proto/rpki/rpki.c | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/proto/rpki/packets.c b/proto/rpki/packets.c index 2c37df76..a711858c 100644 --- a/proto/rpki/packets.c +++ b/proto/rpki/packets.c @@ -956,6 +956,8 @@ rpki_err_hook(struct birdsock *sk, int error_num) CACHE_TRACE(D_EVENTS, cache, "The other side closed a connection"); } + if (cache->p->cache != cache) + return; rpki_cache_change_state(cache, RPKI_CS_ERROR_TRANSPORT); } @@ -975,6 +977,9 @@ rpki_tx_hook(sock *sk) { struct rpki_cache *cache = sk->data; + if (cache->p->cache != cache) + return; + while (rpki_fire_tx(cache) > 0) ; } @@ -984,6 +989,9 @@ rpki_connected_hook(sock *sk) { struct rpki_cache *cache = sk->data; + if (cache->p->cache != cache) + return; + CACHE_TRACE(D_EVENTS, cache, "Connected"); proto_notify_state(&cache->p->p, PS_UP); diff --git a/proto/rpki/rpki.c b/proto/rpki/rpki.c index 72fbc967..95066499 100644 --- a/proto/rpki/rpki.c +++ b/proto/rpki/rpki.c @@ -384,6 +384,9 @@ rpki_refresh_hook(timer *tm) { struct rpki_cache *cache = tm->data; + if (cache->p->cache != cache) + return; + CACHE_DBG(cache, "%s", rpki_cache_state_to_str(cache->state)); switch (cache->state) @@ -430,6 +433,9 @@ rpki_retry_hook(timer *tm) { struct rpki_cache *cache = tm->data; + if (cache->p->cache != cache) + return; + CACHE_DBG(cache, "%s", rpki_cache_state_to_str(cache->state)); switch (cache->state) @@ -475,6 +481,9 @@ rpki_expire_hook(timer *tm) { struct rpki_cache *cache = tm->data; + if (cache->p->cache != cache) + return; + if (!cache->last_update) return; |