X-Git-Url: https://git.exim.org/users/heiko/exim.git/blobdiff_plain/0ab63f3dea522591218c0d65c78a686b7fa64db6..e541bb4728beb40042e2adc9b2ba7d9b734e4524:/test/src/server.c diff --git a/test/src/server.c b/test/src/server.c index 4656b02af..c1f1ecf21 100644 --- a/test/src/server.c +++ b/test/src/server.c @@ -159,7 +159,8 @@ putchar('\n'); #define udn 2 /* Unix domain socket number */ #define skn 2 /* Potential number of sockets */ -int main(int argc, char **argv) +int +main(int argc, char **argv) { int i; int port = 0; @@ -267,7 +268,7 @@ if (na < argc) connection_count = atoi(argv[na]); if (initial_pause > 0) { if (debug) - printf("%d: Inital pause of %d seconds\n", time(NULL), initial_pause); + printf("%ld: Inital pause of %d seconds\n", (long)time(NULL), initial_pause); else printf("Inital pause of %d seconds\n", initial_pause); while (initial_pause > 0) @@ -278,7 +279,7 @@ if (initial_pause > 0) if (port == 0) /* Unix domain */ { - if (debug) printf("%d: Creating Unix domain socket\n", time(NULL)); + if (debug) printf("%l: Creating Unix domain socket\n", (long) time(NULL)); listen_socket[udn] = socket(PF_UNIX, SOCK_STREAM, 0); if (listen_socket[udn] < 0) { @@ -298,7 +299,7 @@ else printf("IPv6 socket creation failed: %s\n", strerror(errno)); exit(1); } - +#if defined(TCP_FASTOPEN) && !defined(__APPLE__) if (tfo) { int backlog = 5; @@ -306,7 +307,7 @@ else &backlog, sizeof(backlog))) if (debug) printf("setsockopt TCP_FASTOPEN: %s\n", strerror(errno)); } - +#endif /* If this is an IPv6 wildcard socket, set IPV6_V6ONLY if that option is available. */ @@ -330,6 +331,7 @@ else printf("IPv4 socket creation failed: %s\n", strerror(errno)); exit(1); } +#if defined(TCP_FASTOPEN) && !defined(__APPLE__) if (tfo) { int backlog = 5; @@ -337,7 +339,7 @@ else &backlog, sizeof(backlog))) if (debug) printf("setsockopt TCP_FASTOPEN: %s\n", strerror(errno)); } - +#endif } } @@ -400,7 +402,7 @@ else sin6.sin6_addr = anyaddr6; if (bind(listen_socket[i], (struct sockaddr *)&sin6, sizeof(sin6)) < 0) { - printf("IPv6 socket bind() failed: %s\n", strerror(errno)); + printf("IPv6 socket bind(port %d) failed: %s\n", port, strerror(errno)); exit(1); } } @@ -419,7 +421,7 @@ else if (bind(listen_socket[i], (struct sockaddr *)&sin4, sizeof(sin4)) < 0) if (listen_socket[v6n] < 0 || errno != EADDRINUSE) { - printf("IPv4 socket bind() failed: %s\n", strerror(errno)); + printf("IPv4 socket bind(port %d) failed: %s\n", port, strerror(errno)); exit(1); } else @@ -437,16 +439,21 @@ error because it means that the IPv6 socket will handle IPv4 connections. Don't output anything, because it will mess up the test output, which will be different for systems that do this and those that don't. */ -for (i = 0; i <= skn; i++) +for (i = 0; i <= skn; i++) if (listen_socket[i] >= 0) { - if (listen_socket[i] >= 0 && listen(listen_socket[i], 5) < 0) - { + if (listen(listen_socket[i], 5) < 0) if (i != v4n || listen_socket[v6n] < 0 || errno != EADDRINUSE) { printf("listen() failed: %s\n", strerror(errno)); exit(1); } - } + +#if defined(TCP_FASTOPEN) && defined(__APPLE__) + if ( tfo + && setsockopt(listen_socket[v4n], IPPROTO_TCP, TCP_FASTOPEN, &on, sizeof(on)) + && debug) + printf("setsockopt TCP_FASTOPEN: %s\n", strerror(errno)); +#endif }