summaryrefslogtreecommitdiff
path: root/tests/server/sockfilt.c
diff options
context:
space:
mode:
authorAlessandro Ghedini <al3xbio@gmail.com>2011-11-16 12:19:47 +0100
committerAlessandro Ghedini <al3xbio@gmail.com>2011-11-16 12:19:47 +0100
commit5b75b1988bc5970cb1bb5b6c4bd07e772c159ba0 (patch)
tree458cf7df0db762a0f9ac7e6cbf8256e40aa1e640 /tests/server/sockfilt.c
parent364250c4614d2c23623d712027fa93f7d58aaf99 (diff)
Imported Upstream version 7.23.0
Diffstat (limited to 'tests/server/sockfilt.c')
-rw-r--r--tests/server/sockfilt.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c
index 90ce9d91..823b9016 100644
--- a/tests/server/sockfilt.c
+++ b/tests/server/sockfilt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -123,6 +123,7 @@
const char *serverlogfile = DEFAULT_LOGFILE;
static bool verbose = FALSE;
+static bool bind_only = FALSE;
#ifdef ENABLE_IPV6
static bool use_ipv6 = FALSE;
#endif
@@ -807,6 +808,12 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
}
}
+ /* bindonly option forces no listening */
+ if(bind_only) {
+ logmsg("instructed to bind port without listening");
+ return sock;
+ }
+
/* start accepting connections */
rc = listen(sock, 5);
if(0 != rc) {
@@ -875,6 +882,10 @@ int main(int argc, char *argv[])
#endif
arg++;
}
+ else if(!strcmp("--bindonly", argv[arg])) {
+ bind_only = TRUE;
+ arg++;
+ }
else if(!strcmp("--port", argv[arg])) {
arg++;
if(argc>arg) {
@@ -923,6 +934,7 @@ int main(int argc, char *argv[])
" --pidfile [file]\n"
" --ipv4\n"
" --ipv6\n"
+ " --bindonly\n"
" --port [port]\n"
" --connect [port]\n"
" --addr [address]");
@@ -950,6 +962,7 @@ int main(int argc, char *argv[])
error = SOCKERRNO;
logmsg("Error creating socket: (%d) %s",
error, strerror(error));
+ write_stdout("FAIL\n", 5);
goto sockfilt_cleanup;
}
@@ -985,6 +998,7 @@ int main(int argc, char *argv[])
error = SOCKERRNO;
logmsg("Error connecting to port %hu: (%d) %s",
connectport, error, strerror(error));
+ write_stdout("FAIL\n", 5);
goto sockfilt_cleanup;
}
logmsg("====> Client connect");
@@ -993,8 +1007,10 @@ int main(int argc, char *argv[])
else {
/* passive daemon style */
sock = sockdaemon(sock, &port);
- if(CURL_SOCKET_BAD == sock)
+ if(CURL_SOCKET_BAD == sock) {
+ write_stdout("FAIL\n", 5);
goto sockfilt_cleanup;
+ }
msgsock = CURL_SOCKET_BAD; /* no stream socket yet */
}
@@ -1002,12 +1018,16 @@ int main(int argc, char *argv[])
if(connectport)
logmsg("Connected to port %hu", connectport);
+ else if(bind_only)
+ logmsg("Bound without listening on port %hu", port);
else
logmsg("Listening on port %hu", port);
wrotepidfile = write_pidfile(pidname);
- if(!wrotepidfile)
+ if(!wrotepidfile) {
+ write_stdout("FAIL\n", 5);
goto sockfilt_cleanup;
+ }
do {
juggle_again = juggle(&msgsock, sock, &mode);