diff options
author | Tobias Brunner <tobias@strongswan.org> | 2015-09-28 17:39:54 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2015-10-30 10:30:30 +0100 |
commit | 25863fe1c7570a5abb833dc35c9d2c2a71a2bce7 (patch) | |
tree | f79b9b43d6a56e0ddcf0a2d8b973a4b533d83bc6 /src | |
parent | 1c8dfa30d01875f1df43aff6db75f3e188829b4f (diff) | |
download | strongswan-25863fe1c7570a5abb833dc35c9d2c2a71a2bce7.tar.bz2 strongswan-25863fe1c7570a5abb833dc35c9d2c2a71a2bce7.tar.xz |
ikev1: Handle queued INFORMATIONAL message after receiving the last AM request
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/sa/ikev1/task_manager_v1.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c index 5b0438ffa..a839f51e7 100644 --- a/src/libcharon/sa/ikev1/task_manager_v1.c +++ b/src/libcharon/sa/ikev1/task_manager_v1.c @@ -1095,6 +1095,22 @@ static status_t process_request(private_task_manager_t *this, * the same message again. */ clear_packets(this->responding.packets); } + if (this->queued && + this->queued->get_exchange_type(this->queued) == INFORMATIONAL_V1) + { + message_t *queued; + status_t status; + + queued = this->queued; + this->queued = NULL; + status = this->public.task_manager.process_message( + &this->public.task_manager, queued); + queued->destroy(queued); + if (status == DESTROY_ME) + { + return status; + } + } if (this->passive_tasks->get_count(this->passive_tasks) == 0 && this->queued_tasks->get_count(this->queued_tasks) > 0) { |