X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/59eaad2b1af0dc58545dff6a7211948782811e1a..4ab69ec7c73967c9ca101d1716fbfa9e24184cd8:/test/src/server.c diff --git a/test/src/server.c b/test/src/server.c index 3aecf76f0..1abd3f49a 100644 --- a/test/src/server.c +++ b/test/src/server.c @@ -572,6 +572,7 @@ for (count = 0; count < connection_count; count++) cr.pid, cr.uid, cr.gid); --------------*****************/ } + fflush(stdout); if (dup_accept_socket < 0) { @@ -639,6 +640,38 @@ for (count = 0; count < connection_count; count++) sleep(sleepfor); } + /* If the script line starts with "*data " we expect a numeric argument, + and we expect to read (and discard) that many data bytes from the input. */ + + else if (strncmp(ss, "*data ", 6) == 0) + { + int dlen = atoi(ss+6); + int n; + + alarm(timeout); + + if (!linebuf) + while (dlen > 0) + { + n = dlen < sizeof(buffer) ? dlen : sizeof(buffer); + if ((n = read(dup_accept_socket, CS buffer, n)) == 0) + { + printf("Unxpected EOF read from client\n"); + s = s->next; + goto END_OFF; + } + dlen -= n; + } + else + while (dlen-- > 0) + if (fgetc(in) == EOF) + { + printf("Unxpected EOF read from client\n"); + s = s->next; + goto END_OFF; + } + } + /* Otherwise the script line is the start of an input line we are expecting from the client, or "*eof" indicating we expect the client to close the connection. Read command line or data lines; the latter are indicated