]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Invoke bus_t.message hook twice, once plain and parsed, once encoded and encrypted
authorMartin Willi <martin@revosec.ch>
Thu, 19 Jan 2012 15:22:25 +0000 (16:22 +0100)
committerMartin Willi <martin@revosec.ch>
Tue, 20 Mar 2012 16:31:37 +0000 (17:31 +0100)
31 files changed:
src/conftest/hooks/add_notify.c
src/conftest/hooks/add_payload.c
src/conftest/hooks/custom_proposal.c
src/conftest/hooks/force_cookie.c
src/conftest/hooks/ignore_message.c
src/conftest/hooks/ike_auth_fill.c
src/conftest/hooks/log_id.c
src/conftest/hooks/log_ke.c
src/conftest/hooks/log_proposals.c
src/conftest/hooks/log_ts.c
src/conftest/hooks/pretend_auth.c
src/conftest/hooks/rebuild_auth.c
src/conftest/hooks/set_critical.c
src/conftest/hooks/set_ike_initiator.c
src/conftest/hooks/set_ike_request.c
src/conftest/hooks/set_ike_spi.c
src/conftest/hooks/set_ike_version.c
src/conftest/hooks/set_length.c
src/conftest/hooks/set_proposal_number.c
src/conftest/hooks/set_reserved.c
src/conftest/hooks/unsort_message.c
src/libcharon/bus/bus.c
src/libcharon/bus/bus.h
src/libcharon/bus/listeners/listener.h
src/libcharon/plugins/duplicheck/duplicheck_listener.c
src/libcharon/plugins/farp/farp_listener.c
src/libcharon/plugins/ha/ha_ike.c
src/libcharon/plugins/led/led_listener.c
src/libcharon/sa/ike_sa.c
src/libcharon/sa/ikev1/task_manager_v1.c
src/libcharon/sa/ikev2/task_manager_v2.c

index a9731960bf77c9f9c1f6970aef961c1be348feba..e3fbbc878edf8cfee73209d56b47b0b35346a0e8 100644 (file)
@@ -60,9 +60,9 @@ struct private_add_notify_t {
 
 METHOD(listener_t, message, bool,
        private_add_notify_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 03a47cc235362f63e7996088832114b1b4b3bf55..37484e8089fbd4dcbfa5427a5780cabe79780697 100644 (file)
@@ -62,9 +62,9 @@ struct private_add_payload_t {
 
 METHOD(listener_t, message, bool,
        private_add_payload_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 4acea18ce54add7eeb50bfac9f9b8f55226b2513..958bc105276167f1329ead836258d5fb9c35ea91 100644 (file)
@@ -111,9 +111,9 @@ static linked_list_t* load_proposals(private_custom_proposal_t *this,
 
 METHOD(listener_t, message, bool,
        private_custom_proposal_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index e2ccb66a8de38fd8feae7d41a94899c90fa546eb..1b044db14b4f0cc2b231b4556bb4664bdf02c390 100644 (file)
@@ -32,9 +32,9 @@ struct private_force_cookie_t {
 
 METHOD(listener_t, message, bool,
        private_force_cookie_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming && message->get_request(message) &&
+       if (incoming && plain && message->get_request(message) &&
                message->get_exchange_type(message) == IKE_SA_INIT)
        {
                enumerator_t *enumerator;
index 210f3ac5085361c895f43af6951e17c25baddab0..3cb5f20597c1a7cb64f29777ec034642dcba6a36 100644 (file)
@@ -45,9 +45,9 @@ struct private_ignore_message_t {
 
 METHOD(listener_t, message, bool,
        private_ignore_message_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming == this->in &&
+       if (incoming == this->in && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 7362c19f4e0075390d2c4f72bf9b2f1b4c3b3360..09590d4f35e523a54bfd41168bb9d6ee1763cd81 100644 (file)
@@ -92,9 +92,9 @@ static size_t calculate_wire_size(message_t *message, ike_sa_t *ike_sa)
 
 METHOD(listener_t, message, bool,
        private_ike_auth_fill_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index ad14cea10bf032b9291eb66a0f10a33a4df890fe..07dd6a44ecd18ba0ca591ca13edbc18b313a9206 100644 (file)
@@ -32,9 +32,9 @@ struct private_log_id_t {
 
 METHOD(listener_t, message, bool,
        private_log_id_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming)
+       if (incoming && plain)
        {
                enumerator_t *enumerator;
                payload_t *payload;
index 231c0a8d8b9849095aeae0de0dafbfabdd066e11..710482326c26ddcc683fd4e7667c563346ea5782 100644 (file)
@@ -32,9 +32,9 @@ struct private_log_ke_t {
 
 METHOD(listener_t, message, bool,
        private_log_ke_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming)
+       if (incoming && plain)
        {
                enumerator_t *enumerator;
                payload_t *payload;
index 8c330ab3de59da593aadada82f2e54d0a0ba94b0..347b83209b230ab37e51cbbb1396233d313b9aa5 100644 (file)
@@ -32,9 +32,9 @@ struct private_log_proposals_t {
 
 METHOD(listener_t, message, bool,
        private_log_proposals_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming)
+       if (incoming && plain)
        {
                enumerator_t *enumerator, *proposals;
                payload_t *payload;
index fb7c89a0a679853c2cb8f1eed8abc2ed0e88b5a0..f212efa12ba90f95b9744bb74b544147eb857701 100644 (file)
@@ -32,9 +32,9 @@ struct private_log_ts_t {
 
 METHOD(listener_t, message, bool,
        private_log_ts_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming)
+       if (incoming && plain)
        {
                enumerator_t *enumerator;
                payload_t *payload;
index 3a7bb4f6b9c0fca6ea231d67b2b6ffc0b3565aa3..cfc39e3a94af51dbd618919315fb0186d0fad90c 100644 (file)
@@ -311,35 +311,38 @@ static void process_auth_response(private_pretend_auth_t *this,
 
 METHOD(listener_t, message, bool,
        private_pretend_auth_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (incoming)
+       if (plain)
        {
-               if (!message->get_request(message))
+               if (incoming)
                {
-                       if (message->get_exchange_type(message) == IKE_SA_INIT)
+                       if (!message->get_request(message))
                        {
-                               process_init_response(this, ike_sa, message);
-                       }
-                       if (message->get_exchange_type(message) == IKE_AUTH &&
-                               message->get_message_id(message) == 1)
-                       {
-                               process_auth_response(this, ike_sa, message);
+                               if (message->get_exchange_type(message) == IKE_SA_INIT)
+                               {
+                                       process_init_response(this, ike_sa, message);
+                               }
+                               if (message->get_exchange_type(message) == IKE_AUTH &&
+                                       message->get_message_id(message) == 1)
+                               {
+                                       process_auth_response(this, ike_sa, message);
+                               }
                        }
                }
-       }
-       else
-       {
-               if (message->get_request(message))
+               else
                {
-                       if (message->get_exchange_type(message) == IKE_SA_INIT)
-                       {
-                               process_init_request(this, ike_sa, message);
-                       }
-                       if (message->get_exchange_type(message) == IKE_AUTH &&
-                               message->get_message_id(message) == 1)
+                       if (message->get_request(message))
                        {
-                               process_auth_request(this, ike_sa, message);
+                               if (message->get_exchange_type(message) == IKE_SA_INIT)
+                               {
+                                       process_init_request(this, ike_sa, message);
+                               }
+                               if (message->get_exchange_type(message) == IKE_AUTH &&
+                                       message->get_message_id(message) == 1)
+                               {
+                                       process_auth_request(this, ike_sa, message);
+                               }
                        }
                }
        }
index 1197eb2dc16134ff9bb3d58a9fc2fca3955ca8cd..8ee4e14b122ef8e7f84b2a5527df6f8e728a3262 100644 (file)
@@ -175,34 +175,37 @@ static bool rebuild_auth(private_rebuild_auth_t *this, ike_sa_t *ike_sa,
 
 METHOD(listener_t, message, bool,
        private_rebuild_auth_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming && message->get_message_id(message) == 1)
+       if (plain)
        {
-               rebuild_auth(this, ike_sa, message);
-       }
-       if (message->get_exchange_type(message) == IKE_SA_INIT)
-       {
-               if (incoming)
+               if (!incoming && message->get_message_id(message) == 1)
                {
-                       nonce_payload_t *nonce;
-
-                       nonce = (nonce_payload_t*)message->get_payload(message, NONCE);
-                       if (nonce)
-                       {
-                               free(this->nonce.ptr);
-                               this->nonce = nonce->get_nonce(nonce);
-                       }
+                       rebuild_auth(this, ike_sa, message);
                }
-               else
+               if (message->get_exchange_type(message) == IKE_SA_INIT)
                {
-                       packet_t *packet;
-
-                       if (message->generate(message, NULL, &packet) == SUCCESS)
+                       if (incoming)
+                       {
+                               nonce_payload_t *nonce;
+
+                               nonce = (nonce_payload_t*)message->get_payload(message, NONCE);
+                               if (nonce)
+                               {
+                                       free(this->nonce.ptr);
+                                       this->nonce = nonce->get_nonce(nonce);
+                               }
+                       }
+                       else
                        {
-                               free(this->ike_init.ptr);
-                               this->ike_init = chunk_clone(packet->get_data(packet));
-                               packet->destroy(packet);
+                               packet_t *packet;
+
+                               if (message->generate(message, NULL, &packet) == SUCCESS)
+                               {
+                                       free(this->ike_init.ptr);
+                                       this->ike_init = chunk_clone(packet->get_data(packet));
+                                       packet->destroy(packet);
+                               }
                        }
                }
        }
index caf2215c3d1846f1779d4f05999ba211633606e1..8ec84e13d85976f0208b3515e12ead5ec784e8fd 100644 (file)
@@ -47,9 +47,9 @@ struct private_set_critical_t {
 
 METHOD(listener_t, message, bool,
        private_set_critical_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 6ba43eaca4bebb1d4ff974d91ef5d77925c00d4e..1674f0a2d1408a62c3aacafdcf070a8767fe3836 100644 (file)
@@ -42,9 +42,9 @@ struct private_set_ike_initiator_t {
 
 METHOD(listener_t, message, bool,
        private_set_ike_initiator_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index baabea66aab6300a7e02c48ff6ec055389c7fed3..fd5b6de61538266a2742304dc7885b41bc1cab36 100644 (file)
@@ -42,9 +42,9 @@ struct private_set_ike_request_t {
 
 METHOD(listener_t, message, bool,
        private_set_ike_request_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 14a0da9cd51bdac780c83a0a16e5c392af53e107..bda02580df9dc942c1acf5586fa2ace74dc9b7b0 100644 (file)
@@ -52,9 +52,9 @@ struct private_set_ike_spi_t {
 
 METHOD(listener_t, message, bool,
        private_set_ike_spi_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index d2de9dc813153ebe3524efe90630cdaf108efbfd..ca52879d1f5523cd520b5a50b22e1fbc94130712 100644 (file)
@@ -57,9 +57,9 @@ struct private_set_ike_version_t {
 
 METHOD(listener_t, message, bool,
        private_set_ike_version_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index eb72e72d9b36801cb5d852a4f9c182787b3ec80c..c1a867a9900be7b190dad53208b12ac85c6f2c72 100644 (file)
@@ -50,9 +50,9 @@ struct private_set_length_t {
 
 METHOD(listener_t, message, bool,
        private_set_length_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 839ca1f37e7f12d0f2acae410a4d448b8b5d819a..0cc3cfc634befb1b97d9b701bb48ec01a8da90d4 100644 (file)
@@ -69,9 +69,9 @@ static void copy_proposal_algs(proposal_t *from, proposal_t *to,
 
 METHOD(listener_t, message, bool,
        private_set_proposal_number_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index 77a605d2a53cbeb546c324ebdf47544bb2313c8b..d1a4a977b92fd1d44f333a8b5f5eba3bb1053def 100644 (file)
@@ -163,9 +163,9 @@ static void set_byte(private_set_reserved_t *this, message_t *message,
 
 METHOD(listener_t, message, bool,
        private_set_reserved_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index b37b261a41d50c28c336b57bb441af40dc9bcef2..1b2b302afcb25b1385987da3b48679dbd69b7444 100644 (file)
@@ -45,9 +45,9 @@ struct private_unsort_message_t {
 
 METHOD(listener_t, message, bool,
        private_unsort_message_t *this, ike_sa_t *ike_sa, message_t *message,
-       bool incoming)
+       bool incoming, bool plain)
 {
-       if (!incoming &&
+       if (!incoming && plain &&
                message->get_request(message) == this->req &&
                message->get_message_id(message) == this->id)
        {
index c1b2bd4580465e94f3f8605d0a72833a2314305e..ed09288ddafbabb9a68114b38051b49d58d0bf5b 100644 (file)
@@ -406,7 +406,7 @@ METHOD(bus_t, child_state_change, void,
 }
 
 METHOD(bus_t, message, void,
-       private_bus_t *this, message_t *message, bool incoming)
+       private_bus_t *this, message_t *message, bool incoming, bool plain)
 {
        enumerator_t *enumerator;
        ike_sa_t *ike_sa;
@@ -425,7 +425,7 @@ METHOD(bus_t, message, void,
                }
                entry->calling++;
                keep = entry->listener->message(entry->listener, ike_sa,
-                                                                               message, incoming);
+                                                                               message, incoming, plain);
                entry->calling--;
                if (!keep)
                {
index 07b334f2951e9e7606fc4b6c7d000d91f36db4fd..a2cf41bbab30515023f68c8b3c5644cf2fcd1fc9 100644 (file)
@@ -235,10 +235,15 @@ struct bus_t {
        /**
         * Message send/receive hook.
         *
+        * The hook is invoked twice for each message: Once with plain, parsed data
+        * and once encoded and encrypted.
+        *
         * @param message       message to send/receive
         * @param incoming      TRUE for incoming messages, FALSE for outgoing
+        * @param plain         TRUE if message is parsed and decrypted, FALSE it not
+        * @param
         */
-       void (*message)(bus_t *this, message_t *message, bool incoming);
+       void (*message)(bus_t *this, message_t *message, bool incoming, bool plain);
 
        /**
         * IKE_SA authorization hook.
index efadea8c582a6b99360b2eced4265307bddec4c5..f04b20fdf03e3f4f3d27e31dfce26dab0bd6dd4c 100644 (file)
@@ -84,13 +84,17 @@ struct listener_t {
        /**
         * Hook called for received/sent messages of an IKE_SA.
         *
+        * The hook is invoked twice for each message: Once with plain, parsed data
+        * and once encoded and encrypted.
+        *
         * @param ike_sa        IKE_SA sending/receiving a message
         * @param message       message object
         * @param incoming      TRUE for incoming messages, FALSE for outgoing
+        * @param plain         TRUE if message is parsed and decrypted, FALSE it not
         * @return                      TRUE to stay registered, FALSE to unregister
         */
        bool (*message)(listener_t *this, ike_sa_t *ike_sa, message_t *message,
-                                       bool incoming);
+                                       bool incoming, bool plain);
 
        /**
         * Hook called with IKE_SA key material.
index 226b2bd4e327c8109326ca1b8f7c022d9fbc5c3e..4f59e034f4eb9e914e5028322d3c39c4c72fc3ff 100644 (file)
@@ -176,9 +176,9 @@ METHOD(listener_t, ike_updown, bool,
 
 METHOD(listener_t, message_hook, bool,
        private_duplicheck_listener_t *this, ike_sa_t *ike_sa,
-       message_t *message, bool incoming)
+       message_t *message, bool incoming, bool plain)
 {
-       if (incoming && !message->get_request(message))
+       if (incoming && plain && !message->get_request(message))
        {
                identification_t *id;
                entry_t *entry;
index 8eed497785707f0bf2770a7121fa9caf0d4420a1..30709c9eb36d740090fd845f78b34969665abdaf 100644 (file)
@@ -78,9 +78,9 @@ METHOD(listener_t, ike_updown, bool,
 
 METHOD(listener_t, message_hook, bool,
        private_farp_listener_t *this, ike_sa_t *ike_sa,
-       message_t *message, bool incoming)
+       message_t *message, bool incoming, bool plain)
 {
-       if (ike_sa->get_state(ike_sa) == IKE_ESTABLISHED &&
+       if (plain && ike_sa->get_state(ike_sa) == IKE_ESTABLISHED &&
                message->get_exchange_type(message) == IKE_AUTH &&
                !message->get_request(message))
        {
index bee6e2a6d3355a13b09b2781102b64b492cd38d2..b18cd6f11a2fe30dc7b71c2c2cf78034b6e2efb6 100644 (file)
@@ -237,7 +237,8 @@ METHOD(listener_t, ike_state_change, bool,
 }
 
 METHOD(listener_t, message_hook, bool,
-       private_ha_ike_t *this, ike_sa_t *ike_sa, message_t *message, bool incoming)
+       private_ha_ike_t *this, ike_sa_t *ike_sa, message_t *message,
+       bool incoming, bool plain)
 {
        if (this->tunnel && this->tunnel->is_sa(this->tunnel, ike_sa))
        {       /* do not sync SA between nodes */
index 4aae2abe5b8f5458dc52ee3eb82e235e2c85cbc3..9d6c5a63c599963f827f7bf99933a72c122fa4aa 100644 (file)
@@ -189,9 +189,9 @@ METHOD(listener_t, ike_state_change, bool,
 
 METHOD(listener_t, message_hook, bool,
        private_led_listener_t *this, ike_sa_t *ike_sa,
-       message_t *message, bool incoming)
+       message_t *message, bool incoming, bool plain)
 {
-       if (incoming || message->get_request(message))
+       if (plain && (incoming || message->get_request(message)))
        {
                blink_activity(this);
        }
index cff7990f1e5e81a50b6574841c240da21132a667..fd43cab6827dee055175342fe290145f5bab5915 100644 (file)
@@ -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,
index 3e46266da303de5ac524c96f90d92c9ae9d1653f..ac3824bc6153a3ea3657e68d8c8d24d4cb9ba82a 100755 (executable)
@@ -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);
index 36252a81de0ceea617a0cfc530e8bf3d1942ee7e..178cec6d6e0e897de6d6bd1dc0454eda586162f7 100644 (file)
@@ -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;