git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix "-bP smtp_receive_timeout". Bug 2384
[exim.git]
/
test
/
src
/
server.c
diff --git
a/test/src/server.c
b/test/src/server.c
index 719350c15b47237d64264f0986356891aa9d741a..ba731625b3733fca1234f280655e20568952bc96 100644
(file)
--- a/
test/src/server.c
+++ b/
test/src/server.c
@@
-267,7
+267,7
@@
if (na < argc) connection_count = atoi(argv[na]);
if (initial_pause > 0)
{
if (debug)
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)
else
printf("Inital pause of %d seconds\n", initial_pause);
while (initial_pause > 0)
@@
-298,7
+298,7
@@
else
printf("IPv6 socket creation failed: %s\n", strerror(errno));
exit(1);
}
printf("IPv6 socket creation failed: %s\n", strerror(errno));
exit(1);
}
-#if
def TCP_FASTOPEN
+#if
defined(TCP_FASTOPEN) && !defined(__APPLE__)
if (tfo)
{
int backlog = 5;
if (tfo)
{
int backlog = 5;
@@
-330,7
+330,7
@@
else
printf("IPv4 socket creation failed: %s\n", strerror(errno));
exit(1);
}
printf("IPv4 socket creation failed: %s\n", strerror(errno));
exit(1);
}
-#if
def TCP_FASTOPEN
+#if
defined(TCP_FASTOPEN) && !defined(__APPLE__)
if (tfo)
{
int backlog = 5;
if (tfo)
{
int backlog = 5;
@@
-438,16
+438,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. */
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 (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
}
}
@@
-519,6
+524,11
@@
s = script;
for (count = 0; count < connection_count; count++)
{
for (count = 0; count < connection_count; count++)
{
+ struct {
+ int left;
+ BOOL in_use;
+ } content_length = { 0, FALSE };
+
alarm(timeout);
if (port <= 0)
{
alarm(timeout);
if (port <= 0)
{
@@
-729,6
+739,7
@@
for (count = 0; count < connection_count; count++)
alarm(timeout);
n = read(dup_accept_socket, CS buffer+offset, s->len - offset);
alarm(timeout);
n = read(dup_accept_socket, CS buffer+offset, s->len - offset);
+ if (content_length.in_use) content_length.left -= n;
if (n == 0)
{
printf("%sxpected EOF read from client\n",
if (n == 0)
{
printf("%sxpected EOF read from client\n",
@@
-746,8
+757,9
@@
for (count = 0; count < connection_count; count++)
if (data) do
{
n = (read(dup_accept_socket, &c, 1) == 1 && c == '.');
if (data) do
{
n = (read(dup_accept_socket, &c, 1) == 1 && c == '.');
+ if (content_length.in_use) content_length.left--;
while (c != '\n' && read(dup_accept_socket, &c, 1) == 1)
while (c != '\n' && read(dup_accept_socket, &c, 1) == 1)
- ;
+
if (content_length.in_use) content_length.left--
;
} while (!n);
else if (memcmp(ss, buffer, n) != 0)
{
} while (!n);
else if (memcmp(ss, buffer, n) != 0)
{
@@
-770,7
+782,8
@@
for (count = 0; count < connection_count; count++)
goto END_OFF;
}
alarm(0);
goto END_OFF;
}
alarm(0);
- n = (int)strlen(CS buffer);
+ n = strlen(CS buffer);
+ if (content_length.in_use) content_length.left -= (n - offset);
while (n > 0 && isspace(buffer[n-1])) n--;
buffer[n] = 0;
printf("%s\n", buffer);
while (n > 0 && isspace(buffer[n-1])) n--;
buffer[n] = 0;
printf("%s\n", buffer);
@@
-784,6
+797,11
@@
for (count = 0; count < connection_count; count++)
break;
}
}
break;
}
}
+
+ if (sscanf(CCS buffer, "<Content-length: %d", &content_length.left))
+ content_length.in_use = TRUE;
+ if (content_length.in_use && content_length.left <= 0)
+ shutdown(dup_accept_socket, SHUT_RD);
}
}
}
}