[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: transport: fix communicator rekey issues
From: |
gnunet |
Subject: |
[gnunet] branch master updated: transport: fix communicator rekey issues |
Date: |
Sun, 10 Mar 2024 16:40:47 +0100 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new b3f53b5b0 transport: fix communicator rekey issues
b3f53b5b0 is described below
commit b3f53b5b037d255af5c46134d0fdf031267f464c
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Sun Mar 10 16:40:34 2024 +0100
transport: fix communicator rekey issues
---
src/service/transport/gnunet-communicator-udp.c | 45 +++++++++++++------------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/src/service/transport/gnunet-communicator-udp.c
b/src/service/transport/gnunet-communicator-udp.c
index 1fc641aed..3d8e980ed 100644
--- a/src/service/transport/gnunet-communicator-udp.c
+++ b/src/service/transport/gnunet-communicator-udp.c
@@ -1490,8 +1490,8 @@ add_acks (struct SharedSecret *ss, int acks_to_add)
/* move ss to head to avoid discarding it anytime soon! */
- GNUNET_CONTAINER_DLL_remove (receiver->ss_head, receiver->ss_tail, ss);
- GNUNET_CONTAINER_DLL_insert (receiver->ss_head, receiver->ss_tail, ss);
+ // GNUNET_CONTAINER_DLL_remove (receiver->ss_head, receiver->ss_tail, ss);
+ // GNUNET_CONTAINER_DLL_insert (receiver->ss_head, receiver->ss_tail, ss);
}
@@ -1701,7 +1701,7 @@ try_handle_plaintext (struct SenderAddress *sender,
ss_rekey->override_available_acks = GNUNET_YES;
// FIXME
kce_generate_cb (ss_rekey);
- /*ss_rekey->sender->kce_task = GNUNET_SCHEDULER_add_delayed (
+ /* ss_rekey->sender->kce_task = GNUNET_SCHEDULER_add_delayed (
WORKING_QUEUE_INTERVALL,
kce_generate_cb,
ss_rekey);*/
@@ -1709,13 +1709,10 @@ try_handle_plaintext (struct SenderAddress *sender,
buf_pos += ntohs (hdr->size);
bytes_remaining -= ntohs (hdr->size);
pass_plaintext_to_core (sender, buf_pos, bytes_remaining);
- if (sender->num_secrets > MAX_SECRETS)
+ if (0 == purge_secrets (sender->ss_tail))
{
- if (0 == purge_secrets (sender->ss_tail))
- {
- // No secret purged. Delete oldest.
- secret_destroy (sender->ss_tail);
- }
+ // No secret purged. Delete oldest.
+ secret_destroy (sender->ss_tail);
}
break;
case GNUNET_MESSAGE_TYPE_COMMUNICATOR_UDP_ACK:
@@ -2191,13 +2188,10 @@ sock_read (void *cls)
1,
GNUNET_NO);
try_handle_plaintext (sender, &uc[1], sizeof(pbuf) - sizeof(*uc));
- if (sender->num_secrets > MAX_SECRETS)
+ if (0 == purge_secrets (sender->ss_tail))
{
- if (0 == purge_secrets (sender->ss_tail))
- {
- // No secret purged. Delete oldest.
- secret_destroy (sender->ss_tail);
- }
+ // No secret purged. Delete oldest.
+ secret_destroy (sender->ss_tail);
}
}
}
@@ -2395,13 +2389,10 @@ send_msg_with_kx (const struct GNUNET_MessageHeader
*msg, struct
GNUNET_CRYPTO_ecdhe_elligator_decoding (&uhs.ephemeral, NULL,
&repr);
- if (receiver->num_secrets > MAX_SECRETS)
+ if (0 == purge_secrets (receiver->ss_tail))
{
- if (0 == purge_secrets (receiver->ss_tail))
- {
- // No secret purged. Delete oldest.
- secret_destroy (receiver->ss_tail);
- }
+ // No secret purged. Delete oldest.
+ secret_destroy (receiver->ss_tail);
}
setup_cipher (&ss->master, 0, &out_cipher);
@@ -2554,13 +2545,20 @@ mq_send_d (struct GNUNET_MQ_Handle *mq,
}
}
/* begin "BOX" encryption method, scan for ACKs from tail! */
- for (ss = receiver->ss_tail; NULL != ss; ss = ss->prev)
+ ss = receiver->ss_tail;
+ struct SharedSecret *ss_tmp;
+ while (NULL != ss)
{
size_t payload_len = sizeof(struct UDPBox) + receiver->d_mtu;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Considering SS %s sequence used: %u sequence allowed: %u
bytes sent: %lu.\n",
+ GNUNET_h2s (&ss->master), ss->sequence_used,
+ ss->sequence_allowed, ss->bytes_sent);
if (ss->sequence_used >= ss->sequence_allowed)
{
// GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
// "Skipping ss because no acks to use.\n");
+ ss = ss->prev;
continue;
}
if (ss->bytes_sent >= rekey_max_bytes)
@@ -2568,6 +2566,9 @@ mq_send_d (struct GNUNET_MQ_Handle *mq,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Skipping ss because rekey bytes reached.\n");
// FIXME cleanup ss with too many bytes sent!
+ ss_tmp = ss->prev;
+ secret_destroy (ss);
+ ss = ss_tmp;
continue;
}
if (ss->bytes_sent > rekey_max_bytes * 0.7)
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: transport: fix communicator rekey issues,
gnunet <=