diff --git a/src/frontends/osx/charon-xpc/xpc_channels.c b/src/frontends/osx/charon-xpc/xpc_channels.c index 05913a784..5e9366bf5 100644 --- a/src/frontends/osx/charon-xpc/xpc_channels.c +++ b/src/frontends/osx/charon-xpc/xpc_channels.c @@ -211,6 +211,7 @@ METHOD(xpc_channels_t, add, void, .logger = xpc_logger_create(conn), ); + xpc_retain(entry->conn); xpc_connection_set_event_handler(entry->conn, ^(xpc_object_t event) { if (event == XPC_ERROR_CONNECTION_INVALID || diff --git a/src/frontends/osx/charon-xpc/xpc_dispatch.c b/src/frontends/osx/charon-xpc/xpc_dispatch.c index df9126c8b..dd7ce1531 100644 --- a/src/frontends/osx/charon-xpc/xpc_dispatch.c +++ b/src/frontends/osx/charon-xpc/xpc_dispatch.c @@ -281,6 +281,7 @@ static void cleanup_connection(private_xpc_dispatch_t *this) */ static void set_handler(private_xpc_dispatch_t *this) { + xpc_retain(this->service); xpc_connection_set_event_handler(this->service, ^(xpc_object_t conn) { xpc_connection_set_event_handler(conn, ^(xpc_object_t event)