ikev2: Clear fragments of a retransmitted message if we receive the next one
authorTobias Brunner <tobias@strongswan.org>
Wed, 28 Oct 2020 14:50:59 +0000 (15:50 +0100)
committerTobias Brunner <tobias@strongswan.org>
Thu, 29 Oct 2020 13:06:19 +0000 (14:06 +0100)
commit6586f07162a7458902718f5c9a75518f8144ee29
tree4a2c4a98c1aaefccb82e74f62578f4110c559767
parent364e69b683e52567b7c7db02ed33527e00c57678
ikev2: Clear fragments of a retransmitted message if we receive the next one

The message_t object used for defragmentation was only cleared after
all fragments have been received and the message was delivered.  So
if we received only some fragments of a retransmitted message, the
fragments of the next message were not processed (message_t returns
INVALID_ARG if the message ID does not match causing the message to
get ignored).  This rendered the IKE_SA unusable as the client
obviously never retransmitted the fragments of that previous message
after it received our response.
src/libcharon/sa/ikev2/task_manager_v2.c