X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/aaf70a50e13231ba06df17d79147ac0d7fed6d91..6a420d96a080e04da6c441f88cc52e60fe661089:/test/server.c diff --git a/test/server.c b/test/server.c index 13f3c873..8d5e0213 100644 --- a/test/server.c +++ b/test/server.c @@ -1,5 +1,4 @@ -/* - * server.c - Utilities for fake servers used by the nmh test suite +/* server.c - Utilities for fake servers used by the nmh test suite * * This code is Copyright (c) 2014, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -25,6 +24,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) { @@ -116,6 +119,8 @@ serve(const char *pidfn, const char *port) exit(1); } + freeaddrinfo(res); + if (listen(l, 1) == -1) { fprintf(stderr, "Unable to listen on socket: %s\n", strerror(errno)); @@ -215,9 +220,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"); } }