From db36f0dfe863e2fe20bcb4e8ef4ba06579ab2e53 Mon Sep 17 00:00:00 2001 From: Kenny Levinsen Date: Tue, 4 Aug 2020 01:43:24 +0200 Subject: client: Sanitize shutdown/kill mechanism --- seatd/client.c | 3 --- seatd/seat.c | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/seatd/client.c b/seatd/client.c index 60e6d55..1adc2d9 100644 --- a/seatd/client.c +++ b/seatd/client.c @@ -76,8 +76,6 @@ void client_kill(struct client *client) { assert(client); if (client->connection.fd != -1) { shutdown(client->connection.fd, SHUT_RDWR); - close(client->connection.fd); - client->connection.fd = -1; }; if (client->seat != NULL) { seat_remove_client(client); @@ -96,7 +94,6 @@ void client_destroy(struct client *client) { client->event_source = NULL; } if (client->connection.fd != -1) { - shutdown(client->connection.fd, SHUT_RDWR); close(client->connection.fd); client->connection.fd = -1; } diff --git a/seatd/seat.c b/seatd/seat.c index 8650e2b..37f2b00 100644 --- a/seatd/seat.c +++ b/seatd/seat.c @@ -40,7 +40,7 @@ void seat_destroy(struct seat *seat) { while (!linked_list_empty(&seat->clients)) { struct client *client = (struct client *)seat->clients.next; // This will cause the client to remove itself from the seat - assert(client->seat); + assert(client->seat == seat); client_kill(client); } assert(seat->curttyfd == -1); @@ -367,7 +367,7 @@ int seat_open_client(struct seat *seat, struct client *client) { seat->active_client = client; if (client_send_enable_seat(client) == -1) { - seat_remove_client(client); + log_error("could not send enable signal"); return -1; } @@ -428,7 +428,7 @@ static int seat_disable_client(struct client *client) { client->pending_disable = true; if (client_send_disable_seat(seat->active_client) == -1) { - seat_remove_client(client); + log_error("could not send disable event"); return -1; } -- cgit v1.2.3