ikev1: Fix calculation of the number of fragments
authorTobias Brunner <tobias@strongswan.org>
Thu, 15 Aug 2013 13:15:34 +0000 (15:15 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 15 Aug 2013 13:15:34 +0000 (15:15 +0200)
The old code resulted in too few fragments in some cases.

src/libcharon/sa/ikev1/task_manager_v1.c

index bcfbe3e..dfceb54 100644 (file)
@@ -448,7 +448,7 @@ static bool send_packet(private_task_manager_t *this, bool request,
                {       /* reduce size due to non-ESP marker */
                        frag_size -= 4;
                }
-               count = (data.len / (frag_size + 1)) + 1;
+               count = data.len / frag_size + (data.len % frag_size ? 1 : 0);
 
                DBG1(DBG_IKE, "sending IKE message with length of %zu bytes in "
                         "%hhu fragments", data.len, count);