From e37c5d46d3fb5ea5c441b809a12c4538ee818ef5 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 22 May 2013 17:22:47 +0200 Subject: [PATCH] xpc: send a "connecting" event when establishing a connection starts --- src/frontends/osx/charon-xpc/xpc_channels.c | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/frontends/osx/charon-xpc/xpc_channels.c b/src/frontends/osx/charon-xpc/xpc_channels.c index 1310b37f65..92a1049faf 100644 --- a/src/frontends/osx/charon-xpc/xpc_channels.c +++ b/src/frontends/osx/charon-xpc/xpc_channels.c @@ -254,6 +254,32 @@ METHOD(listener_t, ike_rekey, bool, return TRUE; } +METHOD(listener_t, ike_state_change, bool, + private_xpc_channels_t *this, ike_sa_t *ike_sa, ike_sa_state_t state) +{ + if (state == IKE_CONNECTING) + { + entry_t *entry; + uintptr_t sa; + + sa = ike_sa->get_unique_id(ike_sa); + this->lock->read_lock(this->lock); + entry = this->channels->get(this->channels, (void*)sa); + if (entry) + { + xpc_object_t msg; + + msg = xpc_dictionary_create(NULL, NULL, 0); + xpc_dictionary_set_string(msg, "type", "event"); + xpc_dictionary_set_string(msg, "event", "connecting"); + xpc_connection_send_message(entry->conn, msg); + xpc_release(msg); + } + this->lock->unlock(this->lock); + } + return TRUE; +} + METHOD(listener_t, child_updown, bool, private_xpc_channels_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa, bool up) @@ -438,6 +464,7 @@ xpc_channels_t *xpc_channels_create() .listener = { .ike_updown = _ike_updown, .ike_rekey = _ike_rekey, + .ike_state_change = _ike_state_change, .child_updown = _child_updown, }, .add = _add, -- 2.47.2