diff options
Diffstat (limited to 'Source/charon/sa/states/responder_init.c')
-rw-r--r-- | Source/charon/sa/states/responder_init.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Source/charon/sa/states/responder_init.c b/Source/charon/sa/states/responder_init.c index 72e11e392..e112f421a 100644 --- a/Source/charon/sa/states/responder_init.c +++ b/Source/charon/sa/states/responder_init.c @@ -155,6 +155,8 @@ struct private_responder_init_t { static status_t process_message(private_responder_init_t *this, message_t *message) { ike_sa_init_responded_t *next_state; + chunk_t ike_sa_init_response_data; + chunk_t ike_sa_init_request_data; exchange_type_t exchange_type; host_t *source, *destination; init_config_t *init_config; @@ -166,6 +168,7 @@ static status_t process_message(private_responder_init_t *this, message_t *messa host_t *my_host; status_t status; + exchange_type = message->get_exchange_type(message); if (exchange_type != IKE_SA_INIT) { @@ -357,12 +360,14 @@ static status_t process_message(private_responder_init_t *this, message_t *messa return DELETE_ME; } - - /* state can now be changed */ this->logger->log(this->logger, CONTROL|MOST, "Create next state object"); - next_state = ike_sa_init_responded_create(this->ike_sa, this->received_nonce); + response = this->ike_sa->get_last_responded_message(this->ike_sa); + ike_sa_init_response_data = response->get_packet_data(response); + ike_sa_init_request_data = message->get_packet_data(message); + + next_state = ike_sa_init_responded_create(this->ike_sa, this->received_nonce, this->sent_nonce,ike_sa_init_request_data,ike_sa_init_response_data); /* state can now be changed */ this->ike_sa->set_new_state(this->ike_sa, (state_t *) next_state); @@ -534,8 +539,6 @@ static void destroy_after_state_change (private_responder_init_t *this) this->diffie_hellman->destroy(this->diffie_hellman); } - this->logger->log(this->logger, CONTROL | MOST, "Destroy sent nonce"); - allocator_free_chunk(&(this->sent_nonce)); this->logger->log(this->logger, CONTROL | MOST, "Destroy object"); allocator_free(this); } |