From 6242a847150d16aad5f1a951438f48fa5cc4ff91 Mon Sep 17 00:00:00 2001 From: Ken Hornstein Date: Tue, 6 Sep 2016 15:32:28 -0400 Subject: [PATCH] Under some circumstances, some version of MacOS X can return EPROTOTYPE if you try to write to a connection that is being torn down. Handle that case. --- test/server.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/server.c b/test/server.c index 5d207141..2c2f5c63 100644 --- a/test/server.c +++ b/test/server.c @@ -25,6 +25,10 @@ static const char *PIDFN = NULL; static void killpidfile(void); static void handleterm(int); +#ifndef EPROTOTYPE +#define EPROTOTYPE 0 +#endif + static int try_bind(int socket, const struct sockaddr *address, socklen_t len) { @@ -217,9 +221,11 @@ putcrlf(int socket, char *data) iov[1].iov_len = 2; /* ECONNRESET just means the client already closed its end */ + /* MacOS X can also return EPROTOTYPE (!) here sometimes */ /* XXX is it useful to log errors here at all? */ - if (writev(socket, iov, 2) < 0 && errno != ECONNRESET) { - perror ("writev"); + if (writev(socket, iov, 2) < 0 && errno != ECONNRESET && + errno != EPROTOTYPE) { + perror ("server writev"); } } -- 2.56.0