Invoke bus_t.message hook twice, once plain and parsed, once encoded and encrypted
This commit is contained in:
@@ -904,6 +904,8 @@ METHOD(ike_sa_t, update_hosts, void,
|
||||
METHOD(ike_sa_t, generate_message, status_t,
|
||||
private_ike_sa_t *this, message_t *message, packet_t **packet)
|
||||
{
|
||||
status_t status;
|
||||
|
||||
if (message->is_encoded(message))
|
||||
{ /* already done */
|
||||
*packet = message->get_packet(message);
|
||||
@@ -911,8 +913,13 @@ METHOD(ike_sa_t, generate_message, status_t,
|
||||
}
|
||||
this->stats[STAT_OUTBOUND] = time_monotonic(NULL);
|
||||
message->set_ike_sa_id(message, this->ike_sa_id);
|
||||
charon->bus->message(charon->bus, message, FALSE);
|
||||
return message->generate(message, this->keymat, packet);
|
||||
charon->bus->message(charon->bus, message, FALSE, TRUE);
|
||||
status = message->generate(message, this->keymat, packet);
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
charon->bus->message(charon->bus, message, FALSE, FALSE);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
METHOD(ike_sa_t, set_kmaddress, void,
|
||||
|
||||
@@ -1045,6 +1045,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
this->active_tasks->get_count(this->active_tasks)))
|
||||
{
|
||||
msg->set_request(msg, FALSE);
|
||||
charon->bus->message(charon->bus, msg, TRUE, FALSE);
|
||||
status = parse_message(this, msg);
|
||||
if (status != SUCCESS)
|
||||
{
|
||||
@@ -1053,7 +1054,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
this->ike_sa->set_statistic(this->ike_sa, STAT_INBOUND,
|
||||
time_monotonic(NULL));
|
||||
this->ike_sa->update_hosts(this->ike_sa, me, other, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE, TRUE);
|
||||
if (process_response(this, msg) != SUCCESS)
|
||||
{
|
||||
flush(this);
|
||||
@@ -1110,6 +1111,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
}
|
||||
|
||||
msg->set_request(msg, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE, FALSE);
|
||||
status = parse_message(this, msg);
|
||||
if (status != SUCCESS)
|
||||
{
|
||||
@@ -1141,7 +1143,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
"charon.half_open_timeout", HALF_OPEN_IKE_SA_TIMEOUT));
|
||||
}
|
||||
this->ike_sa->update_hosts(this->ike_sa, me, other, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE, TRUE);
|
||||
if (process_request(this, msg) != SUCCESS)
|
||||
{
|
||||
flush(this);
|
||||
|
||||
@@ -1036,6 +1036,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
status_t status;
|
||||
u_int32_t mid;
|
||||
|
||||
charon->bus->message(charon->bus, msg, TRUE, FALSE);
|
||||
status = parse_message(this, msg);
|
||||
if (status != SUCCESS)
|
||||
{
|
||||
@@ -1087,7 +1088,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
this->ike_sa->update_hosts(this->ike_sa, me, other, mid == 1);
|
||||
}
|
||||
}
|
||||
charon->bus->message(charon->bus, msg, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE, TRUE);
|
||||
if (msg->get_exchange_type(msg) == EXCHANGE_TYPE_UNDEFINED)
|
||||
{ /* ignore messages altered to EXCHANGE_TYPE_UNDEFINED */
|
||||
return SUCCESS;
|
||||
@@ -1132,7 +1133,7 @@ METHOD(task_manager_t, process_message, status_t,
|
||||
this->ike_sa->update_hosts(this->ike_sa, me, other, FALSE);
|
||||
}
|
||||
}
|
||||
charon->bus->message(charon->bus, msg, TRUE);
|
||||
charon->bus->message(charon->bus, msg, TRUE, TRUE);
|
||||
if (msg->get_exchange_type(msg) == EXCHANGE_TYPE_UNDEFINED)
|
||||
{ /* ignore messages altered to EXCHANGE_TYPE_UNDEFINED */
|
||||
return SUCCESS;
|
||||
|
||||
Reference in New Issue
Block a user