commit 705ef63: [Fix] Lua_tcp: Deal with temporary fails on write

Vsevolod Stakhov vsevolod at highsecure.ru
Fri Oct 18 13:00:06 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-10-18 13:56:17 +0100
URL: https://github.com/rspamd/rspamd/commit/705ef63d5d0505baeadd17da4e9e5986d937a028 (HEAD -> master)

[Fix] Lua_tcp: Deal with temporary fails on write
Issue: #3097

---
 src/lua/lua_tcp.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/lua/lua_tcp.c b/src/lua/lua_tcp.c
index 335d770d5..09d572199 100644
--- a/src/lua/lua_tcp.c
+++ b/src/lua/lua_tcp.c
@@ -850,12 +850,19 @@ lua_tcp_write_helper (struct lua_tcp_cbdata *cbd)
 
 	if (r == -1) {
 		if (!(cbd->ssl_conn)) {
-			lua_tcp_push_error (cbd, TRUE,
-					"IO write error while trying to write %d bytes: %s",
-					(gint) remain, strerror (errno));
+			if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) {
+				msg_debug_tcp ("got temporary failure, retry write");
+				lua_tcp_plan_handler_event (cbd, TRUE, TRUE);
+				return;
+			}
+			else {
+				lua_tcp_push_error (cbd, TRUE,
+						"IO write error while trying to write %d bytes: %s",
+						(gint) remain, strerror (errno));
 
-			msg_debug_tcp ("write error, terminate connection");
-			TCP_RELEASE (cbd);
+				msg_debug_tcp ("write error, terminate connection");
+				TCP_RELEASE (cbd);
+			}
 		}
 
 		return;


More information about the Commits mailing list