summaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-tng.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/gnunet-service-tng.c')
-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;