This patch is generated from the ssl-nohttp-1 branch of HEAD-1 in squid Mon Jan 26 12:58:24 2004 GMT See http://devel.squid-cache.org/ Index: squid/src/cache_cf.c diff -u squid/src/cache_cf.c:1.23 squid/src/cache_cf.c:1.21.20.2.2.4 --- squid/src/cache_cf.c:1.23 Fri May 4 06:39:11 2001 +++ squid/src/cache_cf.c Fri May 4 06:46:01 2001 @@ -84,7 +84,9 @@ static void parse_sockaddr_in_list(sockaddr_in_list **); static void dump_sockaddr_in_list(StoreEntry *, const char *, const sockaddr_in_list *); static void free_sockaddr_in_list(sockaddr_in_list **); +#if 0 static int check_null_sockaddr_in_list(const sockaddr_in_list *); +#endif #if USE_SSL static void parse_https_port_list(https_port_list **); static void dump_https_port_list(StoreEntry *, const char *, const https_port_list *); @@ -315,19 +317,15 @@ if (Config.Accel.port == 0) vport_mode = 1; } - if (Config.Sockaddr.http == NULL) - fatal("No http_port specified!"); - snprintf(ThisCache, sizeof(ThisCache), "%s:%d (%s)", + snprintf(ThisCache, sizeof(ThisCache), "%s (%s)", uniqueHostname(), - (int) ntohs(Config.Sockaddr.http->s.sin_port), full_appname_string); /* * the extra space is for loop detection in client_side.c -- we search * for substrings in the Via header. */ - snprintf(ThisCache2, sizeof(ThisCache), " %s:%d (%s)", + snprintf(ThisCache2, sizeof(ThisCache), " %s (%s)", uniqueHostname(), - (int) ntohs(Config.Sockaddr.http->s.sin_port), full_appname_string); if (!Config.udpMaxHitObjsz || Config.udpMaxHitObjsz > SQUID_UDP_SO_SNDBUF) Config.udpMaxHitObjsz = SQUID_UDP_SO_SNDBUF; @@ -1992,43 +1990,50 @@ return PEER_SIBLING; } -static void -parse_sockaddr_in_list(sockaddr_in_list ** head) +void +parse_sockaddr_in_list_token(sockaddr_in_list ** head, char * token) { - char *token; char *t; char *host; const struct hostent *hp; unsigned short port; sockaddr_in_list *s; - while ((token = strtok(NULL, w_space))) { - host = NULL; - port = 0; - if ((t = strchr(token, ':'))) { - /* host:port */ - host = token; - *t = '\0'; - port = (unsigned short) atoi(t + 1); - if (0 == port) - self_destruct(); - } else if ((port = atoi(token)) > 0) { - /* port */ - } else { - self_destruct(); - } - s = xcalloc(1, sizeof(*s)); - s->s.sin_port = htons(port); - if (NULL == host) - s->s.sin_addr = any_addr; - else if (1 == safe_inet_addr(host, &s->s.sin_addr)) - (void) 0; - else if ((hp = gethostbyname(host))) /* dont use ipcache */ - s->s.sin_addr = inaddrFromHostent(hp); - else + + host = NULL; + port = 0; + if ((t = strchr(token, ':'))) { + /* host:port */ + host = token; + *t = '\0'; + port = (unsigned short) atoi(t + 1); + if (0 == port) self_destruct(); - while (*head) - head = &(*head)->next; - *head = s; + } else if ((port = atoi(token)) > 0) { + /* port */ + } else { + self_destruct(); + } + s = xcalloc(1, sizeof(*s)); + s->s.sin_port = htons(port); + if (NULL == host) + s->s.sin_addr = any_addr; + else if (1 == safe_inet_addr(host, &s->s.sin_addr)) + (void) 0; + else if ((hp = gethostbyname(host))) /* dont use ipcache */ + s->s.sin_addr = inaddrFromHostent(hp); + else + self_destruct(); + while (*head) + head = &(*head)->next; + *head = s; +} + +static void +parse_sockaddr_in_list(sockaddr_in_list ** head) +{ + char *token; + while ((token = strtok(NULL, w_space))) { + parse_sockaddr_in_list_token(head, token); } } @@ -2054,11 +2059,13 @@ } } +#if 0 static int check_null_sockaddr_in_list(const sockaddr_in_list * s) { return NULL == s; } +#endif #if USE_SSL static void Index: squid/src/cf.data.pre diff -u squid/src/cf.data.pre:1.27 squid/src/cf.data.pre:1.26.2.2.2.2 --- squid/src/cf.data.pre:1.27 Fri May 4 06:39:12 2001 +++ squid/src/cf.data.pre Sat Apr 21 11:42:34 2001 @@ -56,7 +56,6 @@ NAME: http_port ascii_port TYPE: sockaddr_in_list DEFAULT: none -DEFAULT_IF_NONE: 3128 LOC: Config.Sockaddr.http DOC_START Usage: port @@ -72,8 +71,6 @@ option. Most likely, you do not need to bind to a specific address, so you can use the port number alone. - The default port number is 3128. - If you are running Squid in accelerator mode, then you probably want to listen on port 80 also, or instead. @@ -82,6 +79,11 @@ address, however. You may specify multiple socket addresses on multiple lines. + +NOCOMMENT_START +# Squid normally listens to port 3128 +http_port 3128 +NOCOMMENT_END DOC_END NAME: https_port Index: squid/src/client_side.c diff -u squid/src/client_side.c:1.28 squid/src/client_side.c:1.27.2.2.2.3 --- squid/src/client_side.c:1.28 Fri May 4 06:39:12 2001 +++ squid/src/client_side.c Fri May 4 06:46:01 2001 @@ -1350,7 +1350,7 @@ /* Append X-Cache-Lookup: -- temporary hack, to be removed @?@ @?@ */ httpHeaderPutStrf(hdr, HDR_X_CACHE_LOOKUP, "%s from %s:%d", http->lookup_type ? http->lookup_type : "NONE", - getMyHostname(), ntohs(Config.Sockaddr.http->s.sin_port)); + getMyHostname(), getMyPort()); #endif if (httpReplyBodySize(request->method, rep) < 0) { debug(33, 3) ("clientBuildReplyHeader: can't keep-alive, unknown body size\n"); @@ -2847,11 +2847,11 @@ if (!http->flags.internal) { if (internalCheck(strBuf(request->urlpath))) { if (internalHostnameIs(request->host) && - request->port == ntohs(Config.Sockaddr.http->s.sin_port)) { + request->port == getMyPort()) { http->flags.internal = 1; } else if (internalStaticCheck(strBuf(request->urlpath))) { xstrncpy(request->host, internalHostname(), SQUIDHOSTNAMELEN); - request->port = ntohs(Config.Sockaddr.http->s.sin_port); + request->port = getMyPort(); http->flags.internal = 1; } } Index: squid/src/internal.c diff -u squid/src/internal.c:1.7 squid/src/internal.c:1.7.32.1 --- squid/src/internal.c:1.7 Fri Jan 12 00:20:33 2001 +++ squid/src/internal.c Thu Apr 19 07:24:22 2001 @@ -96,7 +96,7 @@ { static MemBuf mb = MemBufNULL; static char lc_host[SQUIDHOSTNAMELEN]; - assert(host && port && name); + assert(host && name); /* convert host name to lower case */ xstrncpy(lc_host, host, SQUIDHOSTNAMELEN - 1); Tolower(lc_host); @@ -111,7 +111,7 @@ memBufReset(&mb); memBufPrintf(&mb, "http://%s", lc_host); /* append port if not default */ - if (port != urlDefaultPort(PROTO_HTTP)) + if (port && port != urlDefaultPort(PROTO_HTTP)) memBufPrintf(&mb, ":%d", port); if (dir) memBufPrintf(&mb, "%s", dir); @@ -127,7 +127,7 @@ internalLocalUri(const char *dir, const char *name) { return internalRemoteUri(getMyHostname(), - ntohs(Config.Sockaddr.http->s.sin_port), dir, name); + 0, dir, name); } const char * Index: squid/src/main.c diff -u squid/src/main.c:1.22 squid/src/main.c:1.21.2.2.2.1 --- squid/src/main.c:1.22 Fri May 4 06:39:12 2001 +++ squid/src/main.c Thu Apr 19 07:24:22 2001 @@ -41,7 +41,6 @@ static int opt_send_signal = -1; static int opt_no_daemon = 0; static int opt_parse_cfg_only = 0; -static int httpPortNumOverride = 1; static int icpPortNumOverride = 1; /* Want to detect "-u 0" */ static int configured_once = 0; #if MALLOC_DBG @@ -146,7 +145,7 @@ opt_reload_hit_only = 1; break; case 'a': - httpPortNumOverride = atoi(optarg); + parse_sockaddr_in_list_token(&Config.Sockaddr.http, optarg); break; case 'd': opt_debug_stderr = atoi(optarg); @@ -452,9 +451,6 @@ squid_signal(SIGCHLD, sig_child, SA_NODEFER | SA_RESTART); setEffectiveUser(); - assert(Config.Sockaddr.http); - if (httpPortNumOverride != 1) - Config.Sockaddr.http->s.sin_port = htons(httpPortNumOverride); if (icpPortNumOverride != 1) Config.Port.icp = (u_short) icpPortNumOverride; Index: squid/src/protos.h diff -u squid/src/protos.h:1.25 squid/src/protos.h:1.24.2.1.2.1 --- squid/src/protos.h:1.25 Fri May 4 06:39:12 2001 +++ squid/src/protos.h Thu Apr 19 07:24:22 2001 @@ -94,6 +94,7 @@ extern void requirePathnameExists(const char *name, const char *path); extern void parse_time_t(time_t * var); extern void parse_cachedir_options(SwapDir * sd, struct cache_dir_option *options, int reconfiguring); +extern void parse_sockaddr_in_list_token(sockaddr_in_list **, char *); /* @@ -1148,6 +1149,7 @@ extern int xrename(const char *from, const char *to); extern int isPowTen(int); extern void parseEtcHosts(void); +extern int getMyPort(void); #if USE_HTCP extern void htcpInit(void); Index: squid/src/send-announce.c diff -u squid/src/send-announce.c:1.7 squid/src/send-announce.c:1.7.4.1 --- squid/src/send-announce.c:1.7 Fri Apr 13 17:31:02 2001 +++ squid/src/send-announce.c Thu Apr 19 07:24:22 2001 @@ -72,7 +72,7 @@ assert(Config.Sockaddr.http); snprintf(tbuf, 256, "Running on %s %d %d\n", getMyHostname(), - (int) ntohs(Config.Sockaddr.http->s.sin_port), + getMyPort(), (int) Config.Port.icp); strcat(sndbuf, tbuf); if (Config.adminEmail) { Index: squid/src/tools.c diff -u squid/src/tools.c:1.13 squid/src/tools.c:1.12.4.2 --- squid/src/tools.c:1.13 Fri Apr 27 09:24:56 2001 +++ squid/src/tools.c Mon Apr 30 11:35:18 2001 @@ -1016,3 +1016,15 @@ wordlistDestroy(&hosts); } } + +int getMyPort(void) +{ +#if USE_SSL + if (Config.Sockaddr.http) + return Config.Sockaddr.http->s.sin_port; + else + return Config.Sockaddr.https->s.sin_port; +#else + return Config.Sockaddr.http->s.sin_port; +#endif +} squid-ssl-nohttp-1-HEAD-1.new squid-ssl-nohttp-1-HEAD-1 differ: char 73, line 2