ipc: Correctly deal with SIGPIPE/failing write()s

If a client disconnects while i3 still wants to write the reply, this
could lead to exits of i3 before.
This commit is contained in:
Michael Stapelberg
2010-03-12 15:02:00 +01:00
parent 0f5256dc72
commit 5a3d1b38e8
2 changed files with 9 additions and 2 deletions

View File

@ -85,8 +85,10 @@ static void ipc_send_message(int fd, const unsigned char *payload,
int bytes_to_go = buffer_size;
while (sent_bytes < bytes_to_go) {
int n = write(fd, msg + sent_bytes, bytes_to_go);
if (n == -1)
err(EXIT_FAILURE, "write() failed");
if (n == -1) {
DLOG("write() failed: %s\n", strerror(errno));
return;
}
sent_bytes += n;
bytes_to_go -= n;