diff options
author | Martin Schanzenbach <schanzen@gnunet.org> | 2023-07-30 17:50:52 +0200 |
---|---|---|
committer | Martin Schanzenbach <schanzen@gnunet.org> | 2023-07-30 17:50:52 +0200 |
commit | 48c3a19659db6c34699592da33df0f9af2e9e61a (patch) | |
tree | 925c55c5c15393303662b9bae3294d39da5690f3 /src/transport/gnunet-communicator-udp.c | |
parent | bb4036824c1ae6712aea506a2fa4c77cad053fb1 (diff) | |
download | gnunet-48c3a19659db6c34699592da33df0f9af2e9e61a.tar.gz gnunet-48c3a19659db6c34699592da33df0f9af2e9e61a.zip |
TNG: UDP communicator with sensible shared secret per sender limit.
Diffstat (limited to 'src/transport/gnunet-communicator-udp.c')
-rw-r--r-- | src/transport/gnunet-communicator-udp.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/transport/gnunet-communicator-udp.c b/src/transport/gnunet-communicator-udp.c index eef6634b7..50e66e13a 100644 --- a/src/transport/gnunet-communicator-udp.c +++ b/src/transport/gnunet-communicator-udp.c | |||
@@ -135,7 +135,7 @@ | |||
135 | * sense. Might make sense to adapt to RTT if we had | 135 | * sense. Might make sense to adapt to RTT if we had |
136 | * a good measurement... | 136 | * a good measurement... |
137 | */ | 137 | */ |
138 | #define MAX_SECRETS 128000 | 138 | #define MAX_SECRETS 256 |
139 | 139 | ||
140 | /** | 140 | /** |
141 | * Default value for how often we do rekey based on number of bytes transmitted? | 141 | * Default value for how often we do rekey based on number of bytes transmitted? |
@@ -1011,17 +1011,23 @@ secret_destroy (struct SharedSecret *ss) | |||
1011 | { | 1011 | { |
1012 | GNUNET_CONTAINER_DLL_remove (sender->ss_head, sender->ss_tail, ss); | 1012 | GNUNET_CONTAINER_DLL_remove (sender->ss_head, sender->ss_tail, ss); |
1013 | sender->num_secrets--; | 1013 | sender->num_secrets--; |
1014 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1015 | "%u sender->num_secrets\n", | ||
1016 | receiver->num_secrets); | ||
1017 | if (NULL != ss->sender->kce_task) | ||
1018 | { | ||
1019 | GNUNET_SCHEDULER_cancel (ss->sender->kce_task); | ||
1020 | ss->sender->kce_task = NULL; | ||
1021 | } | ||
1014 | } | 1022 | } |
1015 | if (NULL != (receiver = ss->receiver)) | 1023 | if (NULL != (receiver = ss->receiver)) |
1016 | { | 1024 | { |
1017 | GNUNET_CONTAINER_DLL_remove (receiver->ss_head, receiver->ss_tail, ss); | 1025 | GNUNET_CONTAINER_DLL_remove (receiver->ss_head, receiver->ss_tail, ss); |
1018 | receiver->num_secrets--; | 1026 | receiver->num_secrets--; |
1019 | // Uncomment this for alternativ 1 of backchannel functionality | ||
1020 | receiver->acks_available -= (ss->sequence_allowed - ss->sequence_used); | 1027 | receiver->acks_available -= (ss->sequence_allowed - ss->sequence_used); |
1021 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1028 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1022 | "%u receiver->acks_available 3\n", | 1029 | "%u receiver->num_secrets\n", |
1023 | receiver->acks_available); | 1030 | receiver->num_secrets); |
1024 | // Until here for alternativ 1 | ||
1025 | } | 1031 | } |
1026 | while (NULL != (kce = ss->kce_head)) | 1032 | while (NULL != (kce = ss->kce_head)) |
1027 | kce_destroy (kce); | 1033 | kce_destroy (kce); |
@@ -1030,11 +1036,6 @@ secret_destroy (struct SharedSecret *ss) | |||
1030 | "# KIDs active", | 1036 | "# KIDs active", |
1031 | GNUNET_CONTAINER_multishortmap_size (key_cache), | 1037 | GNUNET_CONTAINER_multishortmap_size (key_cache), |
1032 | GNUNET_NO); | 1038 | GNUNET_NO); |
1033 | if (NULL != ss->sender->kce_task) | ||
1034 | { | ||
1035 | GNUNET_SCHEDULER_cancel (ss->sender->kce_task); | ||
1036 | ss->sender->kce_task = NULL; | ||
1037 | } | ||
1038 | GNUNET_free (ss); | 1039 | GNUNET_free (ss); |
1039 | return GNUNET_YES; | 1040 | return GNUNET_YES; |
1040 | } | 1041 | } |
@@ -1380,22 +1381,23 @@ purge_secrets (struct SharedSecret *ss_list_tail) | |||
1380 | struct SharedSecret *ss_to_purge; | 1381 | struct SharedSecret *ss_to_purge; |
1381 | int deleted = 0; | 1382 | int deleted = 0; |
1382 | 1383 | ||
1384 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1385 | "Purging secrets.\n"); | ||
1383 | pos = ss_list_tail; | 1386 | pos = ss_list_tail; |
1384 | while (NULL != pos) | 1387 | while (NULL != pos) |
1385 | { | 1388 | { |
1386 | ss_to_purge = pos; | 1389 | ss_to_purge = pos; |
1387 | pos = pos->prev; | 1390 | pos = pos->prev; |
1388 | 1391 | ||
1389 | if ((NULL == ss_to_purge->kce_head) || | 1392 | // FIXME we may also want to purge old unacked. |
1390 | (rekey_max_bytes <= ss_to_purge->bytes_sent)) | 1393 | if (rekey_max_bytes <= ss_to_purge->bytes_sent) |
1391 | { | 1394 | { |
1392 | secret_destroy (ss_to_purge); | 1395 | secret_destroy (ss_to_purge); |
1393 | deleted++; | 1396 | deleted++; |
1394 | } | 1397 | } |
1395 | } | 1398 | } |
1396 | |||
1397 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1399 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1398 | "Finished purging all.\n"); | 1400 | "Finished purging all, deleted %u.\n", deleted); |
1399 | } | 1401 | } |
1400 | 1402 | ||
1401 | 1403 | ||