ikev1: Increase DPD sequence number only after receiving a response
authorTobias Brunner <tobias@strongswan.org>
Mon, 6 Aug 2018 15:01:20 +0000 (17:01 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 31 Aug 2018 09:31:35 +0000 (11:31 +0200)
commit9de3140dbf67de5b52431e2f1d8e0b2a37e86219
treeff7e45a3f27c11f45cc9ec44e1b6f02144978caf
parent5c38a5ea832accec3a8d3942d878ac5be5bb2a4b
ikev1: Increase DPD sequence number only after receiving a response

We don't retransmit DPD requests like we do requests for proper exchanges,
so increasing the number with each sent DPD could result in the peer's state
getting out of sync if DPDs are lost.  Because according to RFC 3706, DPDs
with an unexpected sequence number SHOULD be rejected (it does mention the
possibility of maintaining a window of acceptable numbers, but we currently
don't implement that).  We partially ignore such messages (i.e. we don't
update the expected sequence number and the inbound message stats, so we
might send a DPD when none is required).  However, we always send a response,
so a peer won't really notice this (it also ensures a reply for "retransmits"
caused by this change, i.e. multiple DPDs with the same number - hopefully,
other implementations behave similarly when receiving such messages).

Fixes #2714.
src/libcharon/sa/ikev1/task_manager_v1.c