[PATCH] connection: Handle broken pipes in sendmsg

Benjamin Franzke benjaminfranzke at googlemail.com
Sat Jan 29 04:12:39 PST 2011


---
 wayland/connection.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/wayland/connection.c b/wayland/connection.c
index f83979c..64d62db 100644
--- a/wayland/connection.c
+++ b/wayland/connection.c
@@ -265,10 +265,12 @@ wl_connection_data(struct wl_connection *connection, uint32_t mask)
 		msg.msg_flags = 0;
 
 		do {
-			len = sendmsg(connection->fd, &msg, 0);
+			len = sendmsg(connection->fd, &msg, MSG_NOSIGNAL);
 		} while (len < 0 && errno == EINTR);
 
-		if (len < 0) {
+		if (len == -1 && errno == EPIPE) {
+			return -1;
+		} else if (len < 0) {
 			fprintf(stderr,
 				"write error for connection %p, fd %d: %m\n",
 				connection, connection->fd);
-- 
1.7.3.4



More information about the wayland-devel mailing list