summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2017-04-07 08:59:29 -0400
committerLibravatar GitHub <noreply@github.com>2017-04-07 08:59:29 -0400
commit4e12bf64ef946f25e602fd609b80349d100a86ed (patch)
tree695a25ad9476d041ddeab6f45b67160eef6c7f72
parentMerge pull request #1151 from ascent12/master (diff)
parentMerge pull request #1154 from ascent12/fix-1152 (diff)
downloadsway-4e12bf64ef946f25e602fd609b80349d100a86ed.tar.gz
sway-4e12bf64ef946f25e602fd609b80349d100a86ed.tar.zst
sway-4e12bf64ef946f25e602fd609b80349d100a86ed.zip
Merge pull request #1153 from SirCmpwn/fix-1152
Fix dangling file descriptors (fixes #1152)
-rw-r--r--sway/ipc-server.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sway/ipc-server.c b/sway/ipc-server.c
index 0cacc515..984e6754 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;
@@ -193,13 +194,12 @@ int ipc_client_handle_readable(int client_fd, uint32_t mask, void *data) {
193 194
194 if (mask & WLC_EVENT_ERROR) { 195 if (mask & WLC_EVENT_ERROR) {
195 sway_log(L_ERROR, "IPC Client socket error, removing client"); 196 sway_log(L_ERROR, "IPC Client socket error, removing client");
196 client->fd = -1;
197 ipc_client_disconnect(client); 197 ipc_client_disconnect(client);
198 return 0; 198 return 0;
199 } 199 }
200 200
201 if (mask & WLC_EVENT_HANGUP) { 201 if (mask & WLC_EVENT_HANGUP) {
202 client->fd = -1; 202 sway_log(L_DEBUG, "Client %d hung up", client->fd);
203 ipc_client_disconnect(client); 203 ipc_client_disconnect(client);
204 return 0; 204 return 0;
205 } 205 }