From 482fc48c74361dd8b1adf0f5c14abd8e82f35bf6 Mon Sep 17 00:00:00 2001 From: Tobias Blass Date: Wed, 20 Jun 2018 21:35:15 +0200 Subject: [PATCH] FIX: Suprocess loops endlessly when the control socket closes. recvmsg(3) returns 0 if the connection partner has shut down its socket. The communicate function considered 0 a successful message, though, and keeps calling recvmsg(3) again and again. --- backend/session/direct-ipc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/session/direct-ipc.c b/backend/session/direct-ipc.c index 6c69b70a..f8ba07f7 100644 --- a/backend/session/direct-ipc.c +++ b/backend/session/direct-ipc.c @@ -130,7 +130,7 @@ static void communicate(int sock) { int drm_fd = -1; bool running = true; - while (running && recv_msg(sock, &drm_fd, &msg, sizeof(msg)) >= 0) { + while (running && recv_msg(sock, &drm_fd, &msg, sizeof(msg)) > 0) { switch (msg.type) { case MSG_OPEN: errno = 0;