From: hno <> Date: Sun, 2 Sep 2007 01:51:30 +0000 (+0000) Subject: indented X-Git-Tag: SQUID_3_0_RC1~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=988e90e19b64a5fc6ab3ddb759eadedb08a289a6;p=thirdparty%2Fsquid.git indented --- diff --git a/tools/squidclient.cc b/tools/squidclient.cc index cce84ee275..279bfb7cea 100644 --- a/tools/squidclient.cc +++ b/tools/squidclient.cc @@ -1,6 +1,6 @@ /* - * $Id: squidclient.cc,v 1.8 2007/08/10 09:07:01 amosjeffries Exp $ + * $Id: squidclient.cc,v 1.9 2007/09/01 19:51:30 hno Exp $ * * DEBUG: section 0 WWW Client * AUTHOR: Harvest Derived @@ -114,29 +114,29 @@ static void usage(const char *progname) { fprintf(stderr, - "Version: %s\n" - "Usage: %s [-arsv] [-i IMS] [-h remote host] [-l local host] [-p port] [-m method] [-t count] [-I ping-interval] [-H 'strings'] [-T timeout] url\n" - "Options:\n" - " -P file PUT request.\n" - " -a Do NOT include Accept: header.\n" - " -r Force cache to reload URL.\n" - " -s Silent. Do not print data to stdout.\n" - " -v Verbose. Print outgoing message to stderr.\n" - " -i IMS If-Modified-Since time (in Epoch seconds).\n" - " -h host Retrieve URL from cache on hostname. Default is localhost.\n" - " -l host Specify a local IP address to bind to. Default is none.\n" - " -p port Port number of cache. Default is %d.\n" - " -m method Request method, default is GET.\n" - " -t count Trace count cache-hops\n" - " -g count Ping mode, \"count\" iterations (0 to loop until interrupted).\n" - " -I interval Ping interval in seconds (default 1 second).\n" - " -H 'string' Extra headers to send. Use '\\n' for new lines.\n" - " -T timeout Timeout value (seconds) for read/write operations.\n" - " -u user Proxy authentication username\n" - " -w password Proxy authentication password\n" - " -U user WWW authentication username\n" - " -W password WWW authentication password\n", - VERSION, progname, CACHE_HTTP_PORT); + "Version: %s\n" + "Usage: %s [-arsv] [-i IMS] [-h remote host] [-l local host] [-p port] [-m method] [-t count] [-I ping-interval] [-H 'strings'] [-T timeout] url\n" + "Options:\n" + " -P file PUT request.\n" + " -a Do NOT include Accept: header.\n" + " -r Force cache to reload URL.\n" + " -s Silent. Do not print data to stdout.\n" + " -v Verbose. Print outgoing message to stderr.\n" + " -i IMS If-Modified-Since time (in Epoch seconds).\n" + " -h host Retrieve URL from cache on hostname. Default is localhost.\n" + " -l host Specify a local IP address to bind to. Default is none.\n" + " -p port Port number of cache. Default is %d.\n" + " -m method Request method, default is GET.\n" + " -t count Trace count cache-hops\n" + " -g count Ping mode, \"count\" iterations (0 to loop until interrupted).\n" + " -I interval Ping interval in seconds (default 1 second).\n" + " -H 'string' Extra headers to send. Use '\\n' for new lines.\n" + " -T timeout Timeout value (seconds) for read/write operations.\n" + " -u user Proxy authentication username\n" + " -w password Proxy authentication password\n" + " -U user WWW authentication username\n" + " -W password WWW authentication password\n", + VERSION, progname, CACHE_HTTP_PORT); exit(1); } @@ -179,412 +179,390 @@ main(int argc, char *argv[]) ping_int = 1 * 1000; if (argc < 2) { - usage(argv[0]); /* need URL */ + usage(argv[0]); /* need URL */ } else if (argc >= 2) { - strncpy(url, argv[argc - 1], BUFSIZ); - url[BUFSIZ - 1] = '\0'; + strncpy(url, argv[argc - 1], BUFSIZ); + url[BUFSIZ - 1] = '\0'; - if (url[0] == '-') - usage(argv[0]); + if (url[0] == '-') + usage(argv[0]); - while ((c = getopt(argc, argv, "ah:l:P:i:km:p:rsvt:g:p:I:H:T:u:U:w:W:?")) != -1) - switch (c) { + while ((c = getopt(argc, argv, "ah:l:P:i:km:p:rsvt:g:p:I:H:T:u:U:w:W:?")) != -1) + switch (c) { - case 'a': - opt_noaccept = 1; - break; + case 'a': + opt_noaccept = 1; + break; - case 'h': /* remote host */ + case 'h': /* remote host */ - if (optarg != NULL) - hostname = optarg; + if (optarg != NULL) + hostname = optarg; - break; + break; - case 'l': /* local host */ - if (optarg != NULL) - localhost = optarg; + case 'l': /* local host */ + if (optarg != NULL) + localhost = optarg; - break; + break; - case 's': /* silent */ - to_stdout = 0; + case 's': /* silent */ + to_stdout = 0; - break; + break; - case 'k': /* backward compat */ - keep_alive = 1; + case 'k': /* backward compat */ + keep_alive = 1; - break; + break; - case 'r': /* reload */ - reload = 1; + case 'r': /* reload */ + reload = 1; - break; + break; - case 'p': /* port number */ - sscanf(optarg, "%d", &port); + case 'p': /* port number */ + sscanf(optarg, "%d", &port); - if (port < 1) - port = CACHE_HTTP_PORT; /* default */ + if (port < 1) + port = CACHE_HTTP_PORT; /* default */ - break; + break; - case 'P': - put_file = xstrdup(optarg); + case 'P': + put_file = xstrdup(optarg); - break; + break; - case 'i': /* IMS */ - ims = (time_t) atoi(optarg); + case 'i': /* IMS */ + ims = (time_t) atoi(optarg); - break; + break; - case 'm': - method = xstrdup(optarg); + case 'm': + method = xstrdup(optarg); - break; + break; - case 't': - method = xstrdup("TRACE"); + case 't': + method = xstrdup("TRACE"); - max_forwards = atoi(optarg); + max_forwards = atoi(optarg); - break; + break; - case 'g': - ping = 1; + case 'g': + ping = 1; - pcount = atoi(optarg); + pcount = atoi(optarg); - to_stdout = 0; + to_stdout = 0; - break; + break; - case 'I': - if ((ping_int = atoi(optarg) * 1000) <= 0) - usage(argv[0]); + case 'I': + if ((ping_int = atoi(optarg) * 1000) <= 0) + usage(argv[0]); - break; + break; - case 'H': - if (strlen(optarg)) { - char *t; - strncpy(extra_hdrs, optarg, sizeof(extra_hdrs)); + case 'H': + if (strlen(optarg)) { + char *t; + strncpy(extra_hdrs, optarg, sizeof(extra_hdrs)); - while ((t = strstr(extra_hdrs, "\\n"))) - *t = '\r', *(t + 1) = '\n'; - } + while ((t = strstr(extra_hdrs, "\\n"))) + *t = '\r', *(t + 1) = '\n'; + } + break; - break; + case 'T': + io_timeout = atoi(optarg); + break; - case 'T': - io_timeout = atoi(optarg); - break; + case 'u': + proxy_user = optarg; + break; - case 'u': - proxy_user = optarg; - break; + case 'w': + proxy_password = optarg; + break; - case 'w': - proxy_password = optarg; - break; + case 'U': + www_user = optarg; + break; - case 'U': - www_user = optarg; - break; + case 'W': + www_password = optarg; + break; - case 'W': - www_password = optarg; - break; + case 'v': + /* undocumented: may increase verb-level by giving more -v's */ + opt_verbose++; + break; - case 'v': - /* undocumented: may increase verb-level by giving more -v's */ - opt_verbose++; - break; + case '?': /* usage */ - case '?': /* usage */ - - default: - usage(argv[0]); - break; - } + default: + usage(argv[0]); + break; + } } - #ifdef _SQUID_MSWIN_ { - WSADATA wsaData; - WSAStartup(2, &wsaData); + WSADATA wsaData; + WSAStartup(2, &wsaData); } #endif /* Build the HTTP request */ if (strncmp(url, "mgr:", 4) == 0) { - char *t = xstrdup(url + 4); - snprintf(url, BUFSIZ, "cache_object://%s/%s", hostname, t); - xfree(t); + char *t = xstrdup(url + 4); + snprintf(url, BUFSIZ, "cache_object://%s/%s", hostname, t); + xfree(t); } - if (put_file) { - put_fd = open(put_file, O_RDONLY); - set_our_signal(); - - if (put_fd < 0) { - fprintf(stderr, "%s: can't open file (%s)\n", argv[0], - xstrerror()); - exit(-1); - } - + put_fd = open(put_file, O_RDONLY); + set_our_signal(); + + if (put_fd < 0) { + fprintf(stderr, "%s: can't open file (%s)\n", argv[0], + xstrerror()); + exit(-1); + } #ifdef _SQUID_WIN32_ - setmode(put_fd, O_BINARY); + setmode(put_fd, O_BINARY); #endif - fstat(put_fd, &sb); + fstat(put_fd, &sb); } - snprintf(msg, BUFSIZ, "%s %s HTTP/1.0\r\n", method, url); if (reload) { - snprintf(buf, BUFSIZ, "Pragma: no-cache\r\n"); - strcat(msg, buf); + snprintf(buf, BUFSIZ, "Pragma: no-cache\r\n"); + strcat(msg, buf); } - if (put_fd > 0) { - snprintf(buf, BUFSIZ, "Content-length: %d\r\n", (int) sb.st_size); - strcat(msg, buf); + snprintf(buf, BUFSIZ, "Content-length: %d\r\n", (int) sb.st_size); + strcat(msg, buf); } - if (opt_noaccept == 0) { - snprintf(buf, BUFSIZ, "Accept: */*\r\n"); - strcat(msg, buf); + snprintf(buf, BUFSIZ, "Accept: */*\r\n"); + strcat(msg, buf); } - if (ims) { - snprintf(buf, BUFSIZ, "If-Modified-Since: %s\r\n", mkrfc1123(ims)); - strcat(msg, buf); + snprintf(buf, BUFSIZ, "If-Modified-Since: %s\r\n", mkrfc1123(ims)); + strcat(msg, buf); } - if (max_forwards > -1) { - snprintf(buf, BUFSIZ, "Max-Forwards: %d\r\n", max_forwards); - strcat(msg, buf); + snprintf(buf, BUFSIZ, "Max-Forwards: %d\r\n", max_forwards); + strcat(msg, buf); } - if (proxy_user) { - char *user = proxy_user; - char *password = proxy_password; + char *user = proxy_user; + char *password = proxy_password; #if HAVE_GETPASS - if (!password) - password = getpass("Proxy password: "); + if (!password) + password = getpass("Proxy password: "); #endif - if (!password) { - fprintf(stderr, "ERROR: Proxy password missing\n"); - exit(1); - } - - snprintf(buf, BUFSIZ, "%s:%s", user, password); - snprintf(buf, BUFSIZ, "Proxy-Authorization: Basic %s\r\n", base64_encode(buf)); - strcat(msg, buf); + if (!password) { + fprintf(stderr, "ERROR: Proxy password missing\n"); + exit(1); + } + snprintf(buf, BUFSIZ, "%s:%s", user, password); + snprintf(buf, BUFSIZ, "Proxy-Authorization: Basic %s\r\n", base64_encode(buf)); + strcat(msg, buf); } - if (www_user) { - char *user = www_user; - char *password = www_password; + char *user = www_user; + char *password = www_password; #if HAVE_GETPASS - if (!password) - password = getpass("WWW password: "); + if (!password) + password = getpass("WWW password: "); #endif - if (!password) { - fprintf(stderr, "ERROR: WWW password missing\n"); - exit(1); - } - - snprintf(buf, BUFSIZ, "%s:%s", user, password); - snprintf(buf, BUFSIZ, "Authorization: Basic %s\r\n", base64_encode(buf)); - strcat(msg, buf); + if (!password) { + fprintf(stderr, "ERROR: WWW password missing\n"); + exit(1); + } + snprintf(buf, BUFSIZ, "%s:%s", user, password); + snprintf(buf, BUFSIZ, "Authorization: Basic %s\r\n", base64_encode(buf)); + strcat(msg, buf); } - if (keep_alive) { - if (port != 80) - snprintf(buf, BUFSIZ, "Proxy-Connection: keep-alive\r\n"); - else - snprintf(buf, BUFSIZ, "Connection: keep-alive\r\n"); + if (port != 80) + snprintf(buf, BUFSIZ, "Proxy-Connection: keep-alive\r\n"); + else + snprintf(buf, BUFSIZ, "Connection: keep-alive\r\n"); - strcat(msg, buf); + strcat(msg, buf); } - strcat(msg, extra_hdrs); snprintf(buf, BUFSIZ, "\r\n"); strcat(msg, buf); if (opt_verbose) - fprintf(stderr, "headers: '%s'\n", msg); + fprintf(stderr, "headers: '%s'\n", msg); if (ping) { #if HAVE_SIGACTION - struct sigaction sa, osa; - - if (sigaction(SIGINT, NULL, &osa) == 0 && osa.sa_handler == SIG_DFL) { - sa.sa_handler = catchSignal; - sa.sa_flags = 0; - sigemptyset(&sa.sa_mask); - (void) sigaction(SIGINT, &sa, NULL); - } + struct sigaction sa, osa; + if (sigaction(SIGINT, NULL, &osa) == 0 && osa.sa_handler == SIG_DFL) { + sa.sa_handler = catchSignal; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); + (void) sigaction(SIGINT, &sa, NULL); + } #else - void (*osig) (int); + void (*osig) (int); - if ((osig = signal(SIGINT, catchSignal)) != SIG_DFL) - (void) signal(SIGINT, osig); + if ((osig = signal(SIGINT, catchSignal)) != SIG_DFL) + (void) signal(SIGINT, osig); #endif } - loops = ping ? pcount : 1; for (i = 0; loops == 0 || i < loops; i++) { - int fsize = 0; - /* Connect to the server */ - - if ((conn = socket(PF_INET, SOCK_STREAM, 0)) < 0) { - perror("client: socket"); - exit(1); - } - - if (localhost && client_comm_bind(conn, localhost) < 0) { - perror("client: bind"); - exit(1); - } - - if (client_comm_connect(conn, hostname, port, ping ? &tv1 : NULL) < 0) { - if (errno == 0) { - fprintf(stderr, "client: ERROR: Cannot connect to %s:%d: Host unknown.\n", hostname, port); - } else { - char tbuf[BUFSIZ]; - snprintf(tbuf, BUFSIZ, "client: ERROR: Cannot connect to %s:%d", - hostname, port); - perror(tbuf); - } - - exit(1); - } - - /* Send the HTTP request */ - bytesWritten = mywrite(conn, msg, strlen(msg)); - - if (bytesWritten < 0) { - perror("client: ERROR: write"); - exit(1); - } else if ((unsigned) bytesWritten != strlen(msg)) { - fprintf(stderr, "client: ERROR: Cannot send request?: %s\n", msg); - exit(1); - } - - if (put_file) { - int x; - lseek(put_fd, 0, SEEK_SET); + int fsize = 0; + /* Connect to the server */ + + if ((conn = socket(PF_INET, SOCK_STREAM, 0)) < 0) { + perror("client: socket"); + exit(1); + } + if (localhost && client_comm_bind(conn, localhost) < 0) { + perror("client: bind"); + exit(1); + } + if (client_comm_connect(conn, hostname, port, ping ? &tv1 : NULL) < 0) { + if (errno == 0) { + fprintf(stderr, "client: ERROR: Cannot connect to %s:%d: Host unknown.\n", hostname, port); + } else { + char tbuf[BUFSIZ]; + snprintf(tbuf, BUFSIZ, "client: ERROR: Cannot connect to %s:%d", + hostname, port); + perror(tbuf); + } + + exit(1); + } + /* Send the HTTP request */ + bytesWritten = mywrite(conn, msg, strlen(msg)); + + if (bytesWritten < 0) { + perror("client: ERROR: write"); + exit(1); + } else if ((unsigned) bytesWritten != strlen(msg)) { + fprintf(stderr, "client: ERROR: Cannot send request?: %s\n", msg); + exit(1); + } + if (put_file) { + int x; + lseek(put_fd, 0, SEEK_SET); #ifdef _SQUID_MSWIN_ - while ((x = read(put_fd, buf, sizeof(buf))) > 0) { + while ((x = read(put_fd, buf, sizeof(buf))) > 0) { #else - while ((x = myread(put_fd, buf, sizeof(buf))) > 0) { + while ((x = myread(put_fd, buf, sizeof(buf))) > 0) { #endif - x = mywrite(conn, buf, x); - - total_bytes += x; + x = mywrite(conn, buf, x); - if (x <= 0) - break; - } + total_bytes += x; - if (x != 0) - fprintf(stderr, "client: ERROR: Cannot send file.\n"); - } + if (x <= 0) + break; + } - /* Read the data */ + if (x != 0) + fprintf(stderr, "client: ERROR: Cannot send file.\n"); + } + /* Read the data */ #ifdef _SQUID_MSWIN_ - setmode(1, O_BINARY); + setmode(1, O_BINARY); #endif - while ((len = myread(conn, buf, sizeof(buf))) > 0) { - fsize += len; + while ((len = myread(conn, buf, sizeof(buf))) > 0) { + fsize += len; - if (to_stdout) - fwrite(buf, len, 1, stdout); - } + if (to_stdout) + fwrite(buf, len, 1, stdout); + } #ifdef _SQUID_MSWIN_ - setmode(1, O_TEXT); + setmode(1, O_TEXT); #endif - (void) close(conn); /* done with socket */ + (void) close(conn); /* done with socket */ - if (interrupted) - break; + if (interrupted) + break; - if (ping) { + if (ping) { - struct tm *tmp; - time_t t2s; - long elapsed_msec; + struct tm *tmp; + time_t t2s; + long elapsed_msec; - (void) Now(&tv2); - elapsed_msec = tvSubMsec(tv1, tv2); - t2s = tv2.tv_sec; - tmp = localtime(&t2s); - fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n", - tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, - tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1, - elapsed_msec / 1000, elapsed_msec % 1000, - elapsed_msec ? (double) fsize / elapsed_msec : -1.0); + (void) Now(&tv2); + elapsed_msec = tvSubMsec(tv1, tv2); + t2s = tv2.tv_sec; + tmp = localtime(&t2s); + fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n", + tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, + tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1, + elapsed_msec / 1000, elapsed_msec % 1000, + elapsed_msec ? (double) fsize / elapsed_msec : -1.0); - if (i == 0 || elapsed_msec < ping_min) - ping_min = elapsed_msec; + if (i == 0 || elapsed_msec < ping_min) + ping_min = elapsed_msec; - if (i == 0 || elapsed_msec > ping_max) - ping_max = elapsed_msec; + if (i == 0 || elapsed_msec > ping_max) + ping_max = elapsed_msec; - ping_sum += elapsed_msec; + ping_sum += elapsed_msec; - /* Delay until next "ping_int" boundary */ - if ((loops == 0 || i + 1 < loops) && elapsed_msec < ping_int) { + /* Delay until next "ping_int" boundary */ + if ((loops == 0 || i + 1 < loops) && elapsed_msec < ping_int) { - struct timeval tvs; - long msec_left = ping_int - elapsed_msec; + struct timeval tvs; + long msec_left = ping_int - elapsed_msec; - tvs.tv_sec = msec_left / 1000; - tvs.tv_usec = (msec_left % 1000) * 1000; - select(0, NULL, NULL, NULL, &tvs); - } - } + tvs.tv_sec = msec_left / 1000; + tvs.tv_usec = (msec_left % 1000) * 1000; + select(0, NULL, NULL, NULL, &tvs); + } + } } if (ping && i) { - ping_mean = ping_sum / i; - fprintf(stderr, "%d requests, round-trip (secs) min/avg/max = " - "%ld.%03ld/%ld.%03ld/%ld.%03ld\n", i, - ping_min / 1000, ping_min % 1000, ping_mean / 1000, ping_mean % 1000, - ping_max / 1000, ping_max % 1000); + ping_mean = ping_sum / i; + fprintf(stderr, "%d requests, round-trip (secs) min/avg/max = " + "%ld.%03ld/%ld.%03ld/%ld.%03ld\n", i, + ping_min / 1000, ping_min % 1000, ping_mean / 1000, ping_mean % 1000, + ping_max / 1000, ping_max % 1000); } - exit(0); /*NOTREACHED */ return 0; } static int -client_comm_bind(int sock, const char *local_host) { +client_comm_bind(int sock, const char *local_host) +{ static const struct hostent *hp = NULL; @@ -593,22 +571,20 @@ client_comm_bind(int sock, const char *local_host) { /* Set up the source socket address from which to send. */ if (hp == NULL) { - from_addr.sin_family = AF_INET; - - if ((hp = gethostbyname(local_host)) == 0) { - return (-1); - } + from_addr.sin_family = AF_INET; - xmemcpy(&from_addr.sin_addr, hp->h_addr, hp->h_length); - from_addr.sin_port = 0; + if ((hp = gethostbyname(local_host)) == 0) { + return (-1); + } + xmemcpy(&from_addr.sin_addr, hp->h_addr, hp->h_length); + from_addr.sin_port = 0; } - return bind(sock, (struct sockaddr *) &from_addr, sizeof(struct sockaddr_in)); } static int - -client_comm_connect(int sock, const char *dest_host, u_short dest_port, struct timeval *tvp) { +client_comm_connect(int sock, const char *dest_host, u_short dest_port, struct timeval *tvp) +{ static const struct hostent *hp = NULL; @@ -616,27 +592,24 @@ client_comm_connect(int sock, const char *dest_host, u_short dest_port, struct t /* Set up the destination socket address for message to send to. */ - if (hp == NULL) - { - to_addr.sin_family = AF_INET; - - if ((hp = gethostbyname(dest_host)) == 0) { - return (-1); - } + if (hp == NULL) { + to_addr.sin_family = AF_INET; - xmemcpy(&to_addr.sin_addr, hp->h_addr, hp->h_length); - to_addr.sin_port = htons(dest_port); + if ((hp = gethostbyname(dest_host)) == 0) { + return (-1); + } + xmemcpy(&to_addr.sin_addr, hp->h_addr, hp->h_length); + to_addr.sin_port = htons(dest_port); } - if (tvp) - (void) Now(tvp); + (void) Now(tvp); return connect(sock, (struct sockaddr *) &to_addr, sizeof(struct sockaddr_in)); } static int - -Now(struct timeval *tp) { +Now(struct timeval *tp) +{ #if GETTIMEOFDAY_NO_TZP return gettimeofday(tp); #else @@ -646,18 +619,21 @@ Now(struct timeval *tp) { } /* ARGSUSED */ static void -catchSignal(int sig) { +catchSignal(int sig) +{ interrupted = 1; fprintf(stderr, "Interrupted.\n"); } static void -pipe_handler(int sig) { +pipe_handler(int sig) +{ fprintf(stderr, "SIGPIPE received.\n"); } static void -set_our_signal(void) { +set_our_signal(void) +{ #if HAVE_SIGACTION struct sigaction sa; @@ -666,10 +642,9 @@ set_our_signal(void) { sigemptyset(&sa.sa_mask); if (sigaction(SIGPIPE, &sa, NULL) < 0) { - fprintf(stderr, "Cannot set PIPE signal.\n"); - exit(-1); + fprintf(stderr, "Cannot set PIPE signal.\n"); + exit(-1); } - #else signal(SIGPIPE, pipe_handler); @@ -678,7 +653,8 @@ set_our_signal(void) { } static ssize_t -myread(int fd, void *buf, size_t len) { +myread(int fd, void *buf, size_t len) +{ #ifndef _SQUID_MSWIN_ alarm(io_timeout); return read(fd, buf, len); @@ -689,7 +665,8 @@ myread(int fd, void *buf, size_t len) { } static ssize_t -mywrite(int fd, void *buf, size_t len) { +mywrite(int fd, void *buf, size_t len) +{ #ifndef _SQUID_MSWIN_ alarm(io_timeout); return write(fd, buf, len);