From 939cdafdb687e5be31b783c6228fc5aa32d6f418 Mon Sep 17 00:00:00 2001
From: Benny Baumann <BenBE@geshi.org>
Date: Tue, 5 Jan 2021 02:44:28 +0100
Subject: [PATCH] chg: Handle non-blocking sockets when sending data

---
 src/net/tcp_client.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/net/tcp_client.cpp b/src/net/tcp_client.cpp
index ad5d886..e62cffd 100644
--- a/src/net/tcp_client.cpp
+++ b/src/net/tcp_client.cpp
@@ -195,11 +195,12 @@ void tcp_client::push_write_queue(::ev::io &w) {
 	iorecord buffer = this->write_queue.pop_front();
 	ssize_t written = write(w.fd, buffer.ptr(), buffer.size());
 
-	if (written < 0) {
+	if (written >= 0) {
+		buffer.advance((size_t)written);
+	} else if (errno != EAGAIN) {
 		throw netio_exception("Failed to write latest buffer content.");
 	}
 
-	buffer.advance((size_t)written);
 	this->write_queue.push_front(buffer);
 }
 
-- 
GitLab