From: Willy Tarreau Date: Sun, 11 Nov 2012 19:38:30 +0000 (+0100) Subject: BUG: raw_sock: also consider ENOTCONN in addition to EAGAIN X-Git-Tag: v1.5-dev13~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ea0cf6;p=thirdparty%2Fhaproxy.git BUG: raw_sock: also consider ENOTCONN in addition to EAGAIN A failed send() may return ENOTCONN when the connection is not yet established. On Linux, we generally see EAGAIN but on OpenBSD we clearly have ENOTCONN, so let's ensure we poll for write when we encounter this error. --- diff --git a/src/raw_sock.c b/src/raw_sock.c index 52a48a5e4e..b7c9f2b730 100644 --- a/src/raw_sock.c +++ b/src/raw_sock.c @@ -329,7 +329,7 @@ static int raw_sock_from_buf(struct connection *conn, struct buffer *buf, int fl if (ret < try) break; } - else if (ret == 0 || errno == EAGAIN) { + else if (ret == 0 || errno == EAGAIN || errno == ENOTCONN) { /* nothing written, we need to poll for write first */ __conn_data_poll_send(conn); break;