From: Martin Willi Date: Tue, 13 Dec 2011 15:21:47 +0000 (+0100) Subject: Ignore additional TRANSACTION request if we already queued one X-Git-Tag: 5.0.0~338^2~9^2~223 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0b0191e143b1c3b6ecef62c702aed16ebdd7c5d3;p=thirdparty%2Fstrongswan.git Ignore additional TRANSACTION request if we already queued one --- diff --git a/src/libcharon/sa/task_manager_v1.c b/src/libcharon/sa/task_manager_v1.c index e44e4ac334..baf7bb4371 100755 --- a/src/libcharon/sa/task_manager_v1.c +++ b/src/libcharon/sa/task_manager_v1.c @@ -906,9 +906,14 @@ METHOD(task_manager_t, process_message, status_t, return SUCCESS; } if (msg->get_exchange_type(msg) == TRANSACTION && - this->active_tasks->get_count(this->active_tasks) && - !this->queued) + this->active_tasks->get_count(this->active_tasks)) { /* main mode not yet complete, queue XAuth/Mode config tasks */ + if (this->queued) + { + DBG1(DBG_IKE, "ignoring additional %N request, queue full", + exchange_type_names, TRANSACTION); + return SUCCESS; + } this->queued = message_create_from_packet(msg->get_packet(msg)); if (this->queued->parse_header(this->queued) != SUCCESS) {