summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authort3sserakt <t3ss@posteo.de>2023-04-27 18:06:58 +0200
committert3sserakt <t3ss@posteo.de>2023-05-02 12:41:01 +0200
commit4af328381f1e954c90e9b821e366998808394d88 (patch)
tree0515976c49303ffce9260fd9048e97a5e578be08
parent2f3c96abf15d8e1c6851e64a590c3c0eb208431e (diff)
TNG: Fixed bug in calculation of subtree fragment message size.
-rw-r--r--src/transport/gnunet-service-tng.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/transport/gnunet-service-tng.c b/src/transport/gnunet-service-tng.c
index ed4be7e88..c30d2dd19 100644
--- a/src/transport/gnunet-service-tng.c
+++ b/src/transport/gnunet-service-tng.c
@@ -9332,6 +9332,7 @@ fragment_message (struct Queue *queue,
struct PendingAcknowledgement *pa;
struct PendingMessage *ff;
uint16_t mtu;
+ uint16_t msize;
mtu = (UINT16_MAX == queue->mtu)
? UINT16_MAX - sizeof(struct GNUNET_TRANSPORT_SendMessageTo)
@@ -9359,13 +9360,16 @@ fragment_message (struct Queue *queue,
enough
*/
ff = pm;
+ msize = ff->bytes_msg;
+
while (((ff->bytes_msg > mtu) || (pm == ff)) &&
- (ff->frag_off == ff->bytes_msg) && (NULL != ff->head_frag))
+ (ff->frag_off == msize) && (NULL != ff->head_frag))
{
ff = ff->head_frag; /* descent into fragmented fragments */
+ msize = ff->bytes_msg - sizeof(struct TransportFragmentBoxMessage);
}
- if (((ff->bytes_msg > mtu) || (pm == ff)) && (ff->frag_off < ff->bytes_msg))
+ if (((ff->bytes_msg > mtu) || (pm == ff)) && (ff->frag_off < msize))
{
/* Did not yet calculate all fragments, calculate next fragment */
struct PendingMessage *frag;