diff options
author | Alessandro Ghedini <al3xbio@gmail.com> | 2011-11-16 12:19:47 +0100 |
---|---|---|
committer | Alessandro Ghedini <al3xbio@gmail.com> | 2011-11-16 12:19:47 +0100 |
commit | 5b75b1988bc5970cb1bb5b6c4bd07e772c159ba0 (patch) | |
tree | 458cf7df0db762a0f9ac7e6cbf8256e40aa1e640 /tests/server/sockfilt.c | |
parent | 364250c4614d2c23623d712027fa93f7d58aaf99 (diff) |
Imported Upstream version 7.23.0
Diffstat (limited to 'tests/server/sockfilt.c')
-rw-r--r-- | tests/server/sockfilt.c | 26 |
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); |