From 0ea0cf606e1da866b1c1e1b25dbe3472ccaaa6d8 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 11 Nov 2012 20:38:30 +0100 Subject: [PATCH] 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. --- src/raw_sock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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;