From: Tobias Brunner Date: Thu, 30 Apr 2015 10:57:19 +0000 (+0200) Subject: ike-init: Ignore notifies related to redirects during rekeying X-Git-Tag: 5.4.0dr8~12^2~5 X-Git-Url: https://git.strongswan.org/?p=strongswan.git;a=commitdiff_plain;h=9282bc39a7bbd0e6a00e24539b1d21565646bb97 ike-init: Ignore notifies related to redirects during rekeying Also don't query redirect providers in this case. --- diff --git a/src/libcharon/sa/ikev2/tasks/ike_init.c b/src/libcharon/sa/ikev2/tasks/ike_init.c index b5a58df..572c997 100644 --- a/src/libcharon/sa/ikev2/tasks/ike_init.c +++ b/src/libcharon/sa/ikev2/tasks/ike_init.c @@ -437,8 +437,11 @@ static void process_payloads(private_ike_init_t *this, message_t *message) /* fall-through */ } case REDIRECT_SUPPORTED: - this->ike_sa->enable_extension(this->ike_sa, - EXT_IKE_REDIRECTION); + if (!this->old_sa) + { + this->ike_sa->enable_extension(this->ike_sa, + EXT_IKE_REDIRECTION); + } break; default: /* other notifies are handled elsewhere */ @@ -612,7 +615,8 @@ METHOD(task_t, build_r, status_t, this->ike_sa->set_proposal(this->ike_sa, this->proposal); /* check if we'd have to redirect the client */ - if (this->ike_sa->supports_extension(this->ike_sa, EXT_IKE_REDIRECTION) && + if (!this->old_sa && + this->ike_sa->supports_extension(this->ike_sa, EXT_IKE_REDIRECTION) && charon->redirect->redirect_on_init(charon->redirect, this->ike_sa, &gateway)) { @@ -750,6 +754,12 @@ METHOD(task_t, process_i, status_t, chunk_t data, nonce = chunk_empty; status_t status = FAILED; + if (this->old_sa) + { + DBG1(DBG_IKE, "received REDIRECT notify during rekeying" + ", ignored"); + break; + } data = notify->get_notification_data(notify); gateway = redirect_data_parse(data, &nonce); enumerator->destroy(enumerator);