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)
printf("IPv6 socket creation failed: %s\n", strerror(errno));
exit(1);
}
-#ifdef TCP_FASTOPEN
+#if defined(TCP_FASTOPEN) && !defined(__APPLE__)
if (tfo)
{
int backlog = 5;
printf("IPv4 socket creation failed: %s\n", strerror(errno));
exit(1);
}
-#ifdef TCP_FASTOPEN
+#if defined(TCP_FASTOPEN) && !defined(__APPLE__)
if (tfo)
{
int backlog = 5;
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);
}
}
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
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
}