server: properly handle unclaimed file descriptors
[project/udebug.git] / client.c
index 11d1c527c87abfce9c522f6126c63a39747fc539..93f31954f321f28eee09b8ee941991b6fe807d8e 100644 (file)
--- a/client.c
+++ b/client.c
@@ -199,6 +199,12 @@ static void client_parse_message(struct client *cl)
                DC(3, cl, "Invalid message type %d", msg->type);
                break;
        }
+
+       if (cl->rx_fd < 0)
+               return;
+
+       close(cl->rx_fd);
+       cl->rx_fd = -1;
 }
 
 static void client_fd_cb(struct uloop_fd *fd, unsigned int events)
@@ -225,6 +231,7 @@ static void client_fd_cb(struct uloop_fd *fd, unsigned int events)
        msg.msg_controllen = cmsg->cmsg_len;
 
 retry:
+       *pfd = -1;
        if (fd->eof) {
                client_free(cl);
                return;