Browse Source

[Fix] Lua_tcp: Deal with temporary fails on write

Issue: #3097
tags/2.1
Vsevolod Stakhov 4 years ago
parent
commit
705ef63d5d
1 changed files with 12 additions and 5 deletions
  1. 12
    5
      src/lua/lua_tcp.c

+ 12
- 5
src/lua/lua_tcp.c View File

@@ -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;

Loading…
Cancel
Save