aboutsummaryrefslogtreecommitdiffstats
path: root/sway/ipc-server.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2017-04-07 07:55:35 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2017-04-07 07:55:35 -0400
commit50a31a6c88cf29d0ce43ded49ec5c10e6f59f4bf (patch)
tree369745f450eccd1b578fb60e42fa8d29daeff7c2 /sway/ipc-server.c
parentMerge pull request #1151 from ascent12/master (diff)
downloadsway-50a31a6c88cf29d0ce43ded49ec5c10e6f59f4bf.tar.gz
sway-50a31a6c88cf29d0ce43ded49ec5c10e6f59f4bf.tar.zst
sway-50a31a6c88cf29d0ce43ded49ec5c10e6f59f4bf.zip
Fix dangling file descriptors (fixes #1152)
Diffstat (limited to 'sway/ipc-server.c')
-rw-r--r--sway/ipc-server.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sway/ipc-server.c b/sway/ipc-server.c
index 0cacc515..3600cab2 100644
--- a/sway/ipc-server.c
+++ b/sway/ipc-server.c
@@ -161,7 +161,8 @@ int ipc_handle_connection(int fd, uint32_t mask, void *data) {
161 } 161 }
162 162
163 int flags; 163 int flags;
164 if ((flags=fcntl(client_fd, F_GETFD)) == -1 || fcntl(client_fd, F_SETFD, flags|FD_CLOEXEC) == -1) { 164 if ((flags = fcntl(client_fd, F_GETFD)) == -1
165 || fcntl(client_fd, F_SETFD, flags|FD_CLOEXEC) == -1) {
165 sway_log_errno(L_ERROR, "Unable to set CLOEXEC on IPC client socket"); 166 sway_log_errno(L_ERROR, "Unable to set CLOEXEC on IPC client socket");
166 close(client_fd); 167 close(client_fd);
167 return 0; 168 return 0;
@@ -199,6 +200,8 @@ int ipc_client_handle_readable(int client_fd, uint32_t mask, void *data) {
199 } 200 }
200 201
201 if (mask & WLC_EVENT_HANGUP) { 202 if (mask & WLC_EVENT_HANGUP) {
203 sway_log(L_DEBUG, "Client %d hung up", client->fd);
204 close(client->fd);
202 client->fd = -1; 205 client->fd = -1;
203 ipc_client_disconnect(client); 206 ipc_client_disconnect(client);
204 return 0; 207 return 0;