aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2013-03-11 10:52:13 +0100
committerMartin Willi <martin@revosec.ch>2013-03-11 10:53:55 +0100
commit0235914d2fa6896120ca084ef0df241e9ad7798c (patch)
treea9bce04567da862b5e88093812e8cb2b46db5cd0 /src
parentf361a85ebb1f895bdfcec1a16c009b79357238eb (diff)
downloadstrongswan-0235914d2fa6896120ca084ef0df241e9ad7798c.tar.bz2
strongswan-0235914d2fa6896120ca084ef0df241e9ad7798c.tar.xz
Ignore fourth Qick Mode message sent by Windows servers.
Initial patch by Paul Stewart, fixes #289.
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ikev1/task_manager_v1.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c
index 7a84d1cef..ac3b8d0dc 100644
--- a/src/libcharon/sa/ikev1/task_manager_v1.c
+++ b/src/libcharon/sa/ikev1/task_manager_v1.c
@@ -1163,6 +1163,15 @@ static status_t process_response(private_task_manager_t *this,
if (message->get_exchange_type(message) != this->initiating.type)
{
+ /* Windows server sends a fourth quick mode message having an initial
+ * contact notify. Ignore this message for compatibility. */
+ if (this->initiating.type == EXCHANGE_TYPE_UNDEFINED &&
+ message->get_exchange_type(message) == QUICK_MODE &&
+ message->get_notify(message, INITIAL_CONTACT))
+ {
+ DBG1(DBG_IKE, "ignoring fourth Quick Mode message");
+ return SUCCESS;
+ }
DBG1(DBG_IKE, "received %N response, but expected %N",
exchange_type_names, message->get_exchange_type(message),
exchange_type_names, this->initiating.type);