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;