diff --git a/libi3/ipc_send_message.c b/libi3/ipc_send_message.c index 850fbdd2..88d87a6a 100644 --- a/libi3/ipc_send_message.c +++ b/libi3/ipc_send_message.c @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -38,14 +39,15 @@ int ipc_send_message(int sockfd, uint32_t message_size, memcpy(walk, payload, message_size); int sent_bytes = 0; - int bytes_to_go = buffer_size; - while (sent_bytes < bytes_to_go) { - int n = write(sockfd, msg + sent_bytes, bytes_to_go); - if (n == -1) + while (sent_bytes < buffer_size) { + int n = write(sockfd, msg + sent_bytes, buffer_size - sent_bytes); + if (n == -1) { + if (errno == EAGAIN) + continue; return -1; + } sent_bytes += n; - bytes_to_go -= n; } return 0;