free(this);
}
-METHOD(ike_sa_t, initiate_xauth, void,
- private_ike_sa_t *this)
-{
- if(this->extensions & EXT_XAUTH)
- {
- xauth_request_t *xauth_request_task = xauth_request_create(&this->public, TRUE);
- this->task_manager->queue_task(this->task_manager, (task_t*)xauth_request_task);
-
- this->task_manager->initiate_later(this->task_manager);
- }
-}
-
/*
* Described in header.
*/
.callback = _callback,
.respond = _respond,
#endif /* ME */
- .initiate_xauth = _initiate_xauth,
},
.ike_sa_id = ike_sa_id->clone(ike_sa_id),
.version = version,
* Base to calculate retransmission timeout
*/
double retransmit_base;
-
- /**
- * Signal to the task manager that we need to initiate a transaction after the response is sent.
- */
- bool initiate_later_flag;
};
/**
case TASK_QUICK_MODE:
exchange = QUICK_MODE;
break;
- case TASK_XAUTH_REQUEST:
- exchange = TRANSACTION;
- new_mid = TRUE;
- break;
default:
continue;
}
{
enumerator_t *enumerator;
task_t *task = NULL;
- status_t process_status;
if (this->passive_tasks->get_count(this->passive_tasks) == 0)
{ /* create tasks depending on request type, if not already some queued */
}
enumerator->destroy(enumerator);
- process_status = build_response(this, message);
-
- if(((process_status == SUCCESS) || (process_status == NEED_MORE)) && (this->initiate_later_flag == TRUE))
- {
- this->initiate_later_flag = FALSE;
- return initiate(this);
- }
- return process_status;
+ return build_response(this, message);
}
/**
free(this);
}
-METHOD(task_manager_t, initiate_later, void,
- private_task_manager_t *this)
-{
- this->initiate_later_flag = TRUE;
-}
-
/*
* see header file
*/
.busy = _busy,
.create_task_enumerator = _create_task_enumerator,
.destroy = _destroy,
- .initiate_later = _initiate_later,
},
},
.ike_sa = ike_sa,
"charon.retransmit_timeout", RETRANSMIT_TIMEOUT),
.retransmit_base = lib->settings->get_double(lib->settings,
"charon.retransmit_base", RETRANSMIT_BASE),
- .initiate_later_flag = FALSE,
);
return &this->public;