METHOD(task_t, build_i, status_t,
private_ike_mobike_t *this, message_t *message)
{
- if (message->get_exchange_type(message) == IKE_AUTH &&
- message->get_message_id(message) == 1)
- { /* only in first IKE_AUTH */
+ if (message->get_exchange_type(message) == IKE_AUTH)
+ {
message->add_notify(message, FALSE, MOBIKE_SUPPORTED, chunk_empty);
build_address_list(this, message);
+ /* only in first IKE_AUTH */
+ this->public.task.build = (void*)return_need_more;
}
else if (message->get_exchange_type(message) == INFORMATIONAL)
{
METHOD(task_t, process_r, status_t,
private_ike_mobike_t *this, message_t *message)
{
- if (message->get_exchange_type(message) == IKE_AUTH &&
- message->get_message_id(message) == 1)
- { /* only first IKE_AUTH */
+ if (message->get_exchange_type(message) == IKE_AUTH)
+ {
process_payloads(this, message);
+ /* only first IKE_AUTH */
+ this->public.task.process = (void*)return_need_more;
}
else if (message->get_exchange_type(message) == INFORMATIONAL)
{
{
if (message->get_exchange_type(message) == IKE_AUTH &&
this->ike_sa->get_state(this->ike_sa) == IKE_ESTABLISHED)
- {
+ { /* in last IKE_AUTH only */
if (this->ike_sa->supports_extension(this->ike_sa, EXT_MOBIKE))
{
message->add_notify(message, FALSE, MOBIKE_SUPPORTED, chunk_empty);
{
if (message->get_exchange_type(message) == IKE_AUTH &&
this->ike_sa->get_state(this->ike_sa) == IKE_ESTABLISHED)
- {
+ { /* in last IKE_AUTH only */
process_payloads(this, message);
return SUCCESS;
}