aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-communicator-udp.c
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2023-07-30 17:50:52 +0200
committerMartin Schanzenbach <schanzen@gnunet.org>2023-07-30 17:50:52 +0200
commit48c3a19659db6c34699592da33df0f9af2e9e61a (patch)
tree925c55c5c15393303662b9bae3294d39da5690f3 /src/transport/gnunet-communicator-udp.c
parentbb4036824c1ae6712aea506a2fa4c77cad053fb1 (diff)
downloadgnunet-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.c30
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