From 705ef63d5d0505baeadd17da4e9e5986d937a028 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 18 Oct 2019 13:56:17 +0100 Subject: [PATCH] [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; -- 2.39.5