aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/sa
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-11-24 18:09:06 +0100
committerMartin Willi <martin@revosec.ch>2011-01-05 16:45:52 +0100
commit9ca5d0280eb2e4c9d4f4d9ba4307f72a86dbbe56 (patch)
treec173fb7418ecd42f8fcf99933ebb669e08713351 /src/libcharon/sa
parenta6da3795d668b806b2462d8874c9931a6e9821ee (diff)
downloadstrongswan-9ca5d0280eb2e4c9d4f4d9ba4307f72a86dbbe56.tar.bz2
strongswan-9ca5d0280eb2e4c9d4f4d9ba4307f72a86dbbe56.tar.xz
Moved check if packet already encoded to ike_sa, avoids message() hook invocation twice
Diffstat (limited to 'src/libcharon/sa')
-rw-r--r--src/libcharon/sa/ike_sa.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c
index b012c3d39..d6d880d26 100644
--- a/src/libcharon/sa/ike_sa.c
+++ b/src/libcharon/sa/ike_sa.c
@@ -891,6 +891,11 @@ 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)
{
+ if (message->is_encoded(message))
+ { /* already done */
+ *packet = message->get_packet(message);
+ return SUCCESS;
+ }
this->stats[STAT_OUTBOUND] = time_monotonic(NULL);
message->set_ike_sa_id(message, this->ike_sa_id);
charon->bus->message(charon->bus, message, FALSE);