From 0730917115f2f2df04ef7d9c075fcef907d29708 Mon Sep 17 00:00:00 2001 From: Dirk Engling Date: Fri, 4 Dec 2020 06:20:54 +0100 Subject: Add walker that closes unused files after 20 minutes --- receiver.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/receiver.c b/receiver.c index 36b649c..0fe24a2 100644 --- a/receiver.c +++ b/receiver.c @@ -47,6 +47,9 @@ static const unsigned char privkey[] = static const unsigned char pp[] = "IJUHZGFDXTZKHJKHGFDHZLUÖDRTFGHHJGHH"; +// Close files after 20 minutes +#define ACCESS_TIMEOUT (20*60) + /* 1 byte type: 0 allocate session, 1 log to session, rest: discard 8 bytes session id @@ -74,7 +77,7 @@ static size_t g_session_count = 0; int session_compare(const void *a, const void *b) { return memcmp(a, b, 8); } -enum { SIDOFFS = 20, KEYOFFS = 37, }; +enum { SIDOFFS = 20, KEYOFFS = 37 }; static uint8_t hex2nyble(char c) { @@ -238,6 +241,17 @@ static void log_to_session(const uint8_t *packet, size_t len) { mbedtls_gcm_free(&ctx); } +void close_files() { + time_t jetzt = now(); + for (int i=0; i= 0 && + g_sessions[i].last_access != 0 && + jetzt - g_sessions[i].last_access > ACCESS_TIMEOUT) { + close(g_sessions[i].fd); + g_sessions[i].fd = -1; + } +} + int main() { mbedtls_ctr_drbg_context ctr_drbg; mbedtls_entropy_context entropy; @@ -270,6 +284,7 @@ int main() { import_sessions("."); + time_t last_close_check = now(); while(1) { uint8_t packet[16*1024]; uint8_t rsa_plain_text[AES_KEY_LENGTH]; @@ -294,5 +309,10 @@ int main() { default: break; } + time_t jetzt = now(); + if (jetzt > last_close_check + 60) { + close_files(); + last_close_check = jetzt; + } } } -- cgit v1.2.3