diff options
author | Tobias Brunner <tobias@strongswan.org> | 2014-09-16 14:59:05 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2014-09-16 15:05:12 +0200 |
commit | 22949c590f390ac3f94e065313b99f71d80c70d3 (patch) | |
tree | a652ccbbd9d249a8a25ad67a3f4e7f680ac471a7 /src/libcharon | |
parent | 8a6b01dd2ae3e6aacb3f5383914b41844dbb2e50 (diff) | |
download | strongswan-22949c590f390ac3f94e065313b99f71d80c70d3.tar.bz2 strongswan-22949c590f390ac3f94e065313b99f71d80c70d3.tar.xz |
ikev2: Don't treat initial messages as MOBIKE exchanges
The MOBIKE task is active during the initial exchanges but we don't want
to treat them as actual MOBIKE exchanges (i.e. there is no path probing).
Diffstat (limited to 'src/libcharon')
-rw-r--r-- | src/libcharon/sa/ikev2/task_manager_v2.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/libcharon/sa/ikev2/task_manager_v2.c b/src/libcharon/sa/ikev2/task_manager_v2.c index 58f6bc61d..0bc5a35fd 100644 --- a/src/libcharon/sa/ikev2/task_manager_v2.c +++ b/src/libcharon/sa/ikev2/task_manager_v2.c @@ -235,16 +235,19 @@ METHOD(task_manager_t, retransmit, status_t, ike_mobike_t *mobike = NULL; /* check if we are retransmitting a MOBIKE routability check */ - enumerator = array_create_enumerator(this->active_tasks); - while (enumerator->enumerate(enumerator, (void*)&task)) + if (this->initiating.type == INFORMATIONAL) { - if (task->get_type(task) == TASK_IKE_MOBIKE) + enumerator = array_create_enumerator(this->active_tasks); + while (enumerator->enumerate(enumerator, (void*)&task)) { - mobike = (ike_mobike_t*)task; - break; + if (task->get_type(task) == TASK_IKE_MOBIKE) + { + mobike = (ike_mobike_t*)task; + break; + } } + enumerator->destroy(enumerator); } - enumerator->destroy(enumerator); if (!mobike || !mobike->is_probing(mobike)) { |