aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2014-09-16 14:59:05 +0200
committerTobias Brunner <tobias@strongswan.org>2014-09-16 15:05:12 +0200
commit22949c590f390ac3f94e065313b99f71d80c70d3 (patch)
treea652ccbbd9d249a8a25ad67a3f4e7f680ac471a7 /src/libcharon
parent8a6b01dd2ae3e6aacb3f5383914b41844dbb2e50 (diff)
downloadstrongswan-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.c15
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))
{