summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorMaria Matejka <mq@jmq.cz>2021-10-30 15:50:16 +0000
committerMaria Matejka <mq@ucw.cz>2021-11-09 19:20:41 +0100
commit46739f007a8a21c7887a29a465db0c2520fb4a13 (patch)
treeed72baeb799d80d63638129792c671d9d800ed71 /proto
parent13ebe7717685aaa64bbbe09a2e6cc0c6da2bd6bd (diff)
RPKI: Do nothing when protocol is stopping
Diffstat (limited to 'proto')
-rw-r--r--proto/rpki/packets.c8
-rw-r--r--proto/rpki/rpki.c9
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;