diff options
author | Martin Willi <martin@revosec.ch> | 2011-12-13 16:21:47 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-03-20 17:31:21 +0100 |
commit | 0b0191e143b1c3b6ecef62c702aed16ebdd7c5d3 (patch) | |
tree | 5068c6216bf14fa1cb516edd570ab3d5125b496e /src | |
parent | fce566a87662988eab6e6f8dcabb08922e489ede (diff) | |
download | strongswan-0b0191e143b1c3b6ecef62c702aed16ebdd7c5d3.tar.bz2 strongswan-0b0191e143b1c3b6ecef62c702aed16ebdd7c5d3.tar.xz |
Ignore additional TRANSACTION request if we already queued one
Diffstat (limited to 'src')
-rwxr-xr-x | src/libcharon/sa/task_manager_v1.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libcharon/sa/task_manager_v1.c b/src/libcharon/sa/task_manager_v1.c index e44e4ac33..baf7bb437 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) { |