diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2024-03-21 15:58:52 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2024-03-21 15:58:52 +0100 |
commit | 46a4932574106315e2585d990199da7825863a85 (patch) | |
tree | 7910e6f489198353d9d35d5b4a4ba898008c8088 | |
parent | 66d6ac70856bdb29840983454373bb10a532e4f7 (diff) | |
parent | 44e351d1522f0099687aac9fd65dcea73a04af43 (diff) |
Merge commit '44e351d1522f0099687aac9fd65dcea73a04af43'
-rw-r--r-- | proto/rpki/rpki.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/proto/rpki/rpki.c b/proto/rpki/rpki.c index 3e321627..4ec48e3b 100644 --- a/proto/rpki/rpki.c +++ b/proto/rpki/rpki.c @@ -295,6 +295,7 @@ rpki_cache_change_state(struct rpki_cache *cache, const enum rpki_cache_state ne rpki_close_connection(cache); rpki_schedule_next_retry(cache); rpki_stop_refresh_timer_event(cache); + cache->request_session_id = 1; break; case RPKI_CS_FAST_RECONNECT: @@ -365,12 +366,11 @@ rpki_stop_expire_timer_event(struct rpki_cache *cache) } static int -rpki_do_we_recv_prefix_pdu_in_last_seconds(struct rpki_cache *cache) +rpki_sync_is_stuck(struct rpki_cache *cache) { - if (!cache->last_rx_prefix) - return 0; - - return ((current_time() - cache->last_rx_prefix) <= 2 S); + return !sk_rx_ready(cache->tr_sock->sk) && ( + !cache->last_rx_prefix || (current_time() - cache->last_rx_prefix > 10 S) + ); } /** @@ -402,7 +402,7 @@ rpki_refresh_hook(timer *tm) /* We sent Serial/Reset Query in last refresh hook call * and we got Cache Response but didn't get End-Of-Data yet. * It could be a trouble with network or only too long synchronization. */ - if (!rpki_do_we_recv_prefix_pdu_in_last_seconds(cache)) + if (rpki_sync_is_stuck(cache)) { CACHE_TRACE(D_EVENTS, cache, "Sync takes more time than refresh interval %us, resetting connection", cache->refresh_interval); rpki_cache_change_state(cache, RPKI_CS_ERROR_TRANSPORT); @@ -443,7 +443,7 @@ rpki_retry_hook(timer *tm) case RPKI_CS_CONNECTING: case RPKI_CS_SYNC_START: case RPKI_CS_SYNC_RUNNING: - if (!rpki_do_we_recv_prefix_pdu_in_last_seconds(cache)) + if (rpki_sync_is_stuck(cache)) { /* We tried to establish a connection in last retry hook call and haven't done * yet. It looks like troubles with network. We are aggressive here. */ |