diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 3 | ||||
| -rw-r--r-- | src/proto.c | 2 | ||||
| -rw-r--r-- | src/routing.c | 18 | ||||
| -rw-r--r-- | src/routing.h | 1 |
4 files changed, 17 insertions, 7 deletions
@@ -155,11 +155,14 @@ int main(int argc, char** argv) { /* myID = (struct nodeid){.inner={0xebe9bbf1, 0x3cdba6b3, 0x993e0c87, 0x900d5e25, 0x00000000}}; */ routing_init(&myID); allocate_hashtable(); + } else { + routing_reset_expire(time(NULL) + PROTO_UNCTM); } dht.self = myID; } + metric_init(); routing_update_metrics(); peer_update_metrics(); diff --git a/src/proto.c b/src/proto.c index 9866c0a..51eb71b 100644 --- a/src/proto.c +++ b/src/proto.c @@ -883,7 +883,7 @@ int proto_run(struct dht* dht, char* buff, size_t recv_len, struct sockaddr_in* struct entry* oldest = NULL; routing_oldest(&oldest); while(oldest != NULL) { - if(difftime(now, oldest->expire) < 0) + if(difftime(now, oldest->expire) < 0.0) break; struct sockaddr_in dest = {0}; diff --git a/src/routing.c b/src/routing.c index 30f0deb..a3e0b26 100644 --- a/src/routing.c +++ b/src/routing.c @@ -73,12 +73,6 @@ void routing_update_metrics() { prom_gauge_set(routing_table_occupied, filled, (const char*[]){buf}); } - - time_t reasonable = time(NULL) + 120; - for(size_t i = 0; i < RT_SIZE; i++) { - if(pTable->table[i].set) continue; - if(reasonable < pTable->table[i].expire) dbg("%d will expire quite far into the future after now? (%ld < %ld)", i, reasonable, pTable->table[i].expire); - } } void routing_flush() { @@ -300,6 +294,18 @@ void routing_oldest(struct entry** dest) { } } +void routing_reset_expire(time_t expire) { + for(struct entry* entry = pTable->table; entry < pTable->table+RT_SIZE; entry++){ + if(!entry->set) + continue; + + if(entry->expire != 0) + continue; + + entry->expire = expire; + } +} + void routing_status(int* filled, int* size, double* load_factor, size_t load_factor_len) { *size = RT_SIZE; diff --git a/src/routing.h b/src/routing.h index be1ae8d..aee2c8e 100644 --- a/src/routing.h +++ b/src/routing.h @@ -43,6 +43,7 @@ bool routing_interested(struct nodeid* id); bool routing_offer(struct nodeid* id, struct entry **dest); void routing_oldest(struct entry** dest); size_t routing_closest(struct nodeid* needle, size_t n, struct entry** res); +void routing_reset_expire(time_t expire); void routing_status(int* filled, int* size, double* load_factor, size_t load_factor_len); struct entry* routing_get(struct nodeid* id); |
