ike-sa-manager: Use transient hasher for IKE_SA_INIT hash calculation
authorChristophe Gouault <christophe.gouault@6wind.com>
Fri, 11 Jul 2014 11:40:25 +0000 (13:40 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 25 Aug 2014 07:45:14 +0000 (09:45 +0200)
commitc08b74c52465a142143affaf4241c4497ba2e425
treef24057cbab5c8df274850460a9858c2c39f9f538
parent46184b07c1637abcd84629d35aad34d85ffba3d7
ike-sa-manager: Use transient hasher for IKE_SA_INIT hash calculation

To check if a received IKE_SA_INIT request is a new request or a
retransmit, charon maintains hashes of the pending IKE_SA_INIT
exchanges.

However, the hash calculation is not reentrant because a single hasher
is used for the whole IKE SA manager. It leads to bogus calculations
under high load and hence dropped messages on responder
(IkeInInvalidSpi incremented).

Don't share a single hasher in the IKE SA manager, create a transient
one whenever a message must be hashed.

Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
src/libcharon/sa/ike_sa_manager.c