ikev1: Queue INFORMATIONAL request if AM is not complete yet

This commit is contained in:
Tobias Brunner 2015-09-28 17:37:42 +02:00
parent 3805880c8a
commit 1c8dfa30d0

View File

@ -1387,14 +1387,21 @@ METHOD(task_manager_t, process_message, status_t,
} }
/* drop XAuth/Mode Config/Quick Mode messages until we received the last /* drop XAuth/Mode Config/Quick Mode messages until we received the last
* Aggressive Mode message */ * Aggressive Mode message. since Informational messages are not
if (have_aggressive_mode_task(this) && * retransmitted we queue them. */
msg->get_exchange_type(msg) != AGGRESSIVE) if (have_aggressive_mode_task(this))
{
if (msg->get_exchange_type(msg) == INFORMATIONAL_V1)
{
return queue_message(this, msg);
}
else if (msg->get_exchange_type(msg) != AGGRESSIVE)
{ {
DBG1(DBG_IKE, "ignoring %N request while phase 1 is incomplete", DBG1(DBG_IKE, "ignoring %N request while phase 1 is incomplete",
exchange_type_names, msg->get_exchange_type(msg)); exchange_type_names, msg->get_exchange_type(msg));
return FAILED; return FAILED;
} }
}
/* queue XAuth/Mode Config messages unless the Main Mode exchange we /* queue XAuth/Mode Config messages unless the Main Mode exchange we
* initiated is complete */ * initiated is complete */