diff --git a/src/daemon/toks_daemon_acquire.c b/src/daemon/toks_daemon_acquire.c index 5a004e9..6d89331 100644 --- a/src/daemon/toks_daemon_acquire.c +++ b/src/daemon/toks_daemon_acquire.c @@ -49,7 +49,6 @@ static int32_t toks_daemon_client_wait(void * rapunzel) client = &token->client; ntapi->zw_set_event(client->hswap,0); - ntapi->zw_close(client->hswap); hduo[0] = client->hprocess; hduo[1] = client->halert; @@ -136,9 +135,10 @@ static int32_t toks_daemon_token_instance( NT_SYNC_NON_ALERTABLE, 0); + ntapi->zw_close(client->hswap); + if (status) { toks_daemon_token_reset(token); - ntapi->zw_close(client->hswap); ntapi->zw_close(client->halert); return status; } diff --git a/src/daemon/toks_daemon_connect.c b/src/daemon/toks_daemon_connect.c index 1ef8425..984f8d4 100644 --- a/src/daemon/toks_daemon_connect.c +++ b/src/daemon/toks_daemon_connect.c @@ -18,7 +18,6 @@ static int32_t toks_daemon_client_wait(void * rapunzel) client = (struct toks_client_ctx *)rapunzel; ntapi->zw_set_event(client->hswap,0); - ntapi->zw_close(client->hswap); ntapi->zw_wait_for_single_object( client->hprocess, @@ -64,6 +63,8 @@ static int32_t toks_daemon_client_instance(struct toks_client_ctx * client) 0))) return status; + ntapi->zw_close(client->hswap); + return ntapi->zw_close(params.hthread); }