aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/tests
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2016-05-30 15:39:38 +0200
committerTobias Brunner <tobias@strongswan.org>2016-06-17 18:48:05 +0200
commit40d9a4c892bb18440bc463ba7bc63e0fa31195c3 (patch)
tree05b90ab59245f96305b7ad23decbc9863b3bedde /src/libcharon/tests
parent498a46d22f8c3ae51a01bdf6cba8c7857e608acf (diff)
downloadstrongswan-40d9a4c892bb18440bc463ba7bc63e0fa31195c3.tar.bz2
strongswan-40d9a4c892bb18440bc463ba7bc63e0fa31195c3.tar.xz
unit-tests: Only deliver messages to the SA they are addressed to
Diffstat (limited to 'src/libcharon/tests')
-rw-r--r--src/libcharon/tests/utils/exchange_test_helper.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libcharon/tests/utils/exchange_test_helper.c b/src/libcharon/tests/utils/exchange_test_helper.c
index ab562271f..f32906d5d 100644
--- a/src/libcharon/tests/utils/exchange_test_helper.c
+++ b/src/libcharon/tests/utils/exchange_test_helper.c
@@ -182,16 +182,24 @@ METHOD(backend_t, create_peer_cfg_enumerator, enumerator_t*,
METHOD(exchange_test_helper_t, process_message, status_t,
private_exchange_test_helper_t *this, ike_sa_t *ike_sa, message_t *message)
{
- status_t status;
+ status_t status = FAILED;
+ ike_sa_id_t *id;
if (!message)
{
message = this->public.sender->dequeue(this->public.sender);
}
- charon->bus->set_sa(charon->bus, ike_sa);
- status = ike_sa->process_message(ike_sa, message);
- charon->bus->set_sa(charon->bus, NULL);
+ id = message->get_ike_sa_id(message);
+ id = id->clone(id);
+ id->switch_initiator(id);
+ if (!id->get_responder_spi(id) || id->equals(id, ike_sa->get_id(ike_sa)))
+ {
+ charon->bus->set_sa(charon->bus, ike_sa);
+ status = ike_sa->process_message(ike_sa, message);
+ charon->bus->set_sa(charon->bus, NULL);
+ }
message->destroy(message);
+ id->destroy(id);
return status;
}