/*
- * $Id: cache_cf.cc,v 1.156 1996/12/17 04:06:02 wessels Exp $
+ * $Id: cache_cf.cc,v 1.157 1996/12/17 07:16:51 wessels Exp $
*
* DEBUG: section 3 Configuration File Parsing
* AUTHOR: Harvest Derived
GetInteger(i);
Config.Announce.rate = i * 3600; /* hours to seconds */
if (Config.Announce.rate > 0)
- Config.Announce.on = 1;
+ Config.Announce.on = 1;
}
static void
/*
- * $Id: client.cc,v 1.15 1996/11/06 23:14:23 wessels Exp $
+ * $Id: client.cc,v 1.16 1996/12/17 07:16:52 wessels Exp $
*
* DEBUG: section 0 WWW Client
* AUTHOR: Harvest Derived
const char *method = "GET";
extern char *optarg;
time_t ims = 0;
+ int max_forwards = -1;
/* set the defaults */
strcpy(hostname, "localhost");
strcpy(url, argv[argc - 1]);
if (url[0] == '-')
usage(argv[0]);
- while ((c = getopt(argc, argv, "fsrnp:c:h:i:m:?")) != -1)
+ while ((c = getopt(argc, argv, "fsrnp:c:h:i:m:t:?")) != -1)
switch (c) {
case 'h': /* host:arg */
case 'c': /* backward compat */
case 'm':
method = xstrdup(optarg);
break;
+ case 't':
+ method = xstrdup("TRACE");
+ max_forwards = atoi(optarg);
+ break;
case '?': /* usage */
default:
usage(argv[0]);
sprintf(buf, "If-Modified-Since: %s\r\n", mkrfc1123(ims));
strcat(msg, buf);
}
+ if (max_forwards > -1) {
+ sprintf(buf, "Max-Forwards: %d\r\n", max_forwards);
+ strcat(msg, buf);
+ }
sprintf(buf, "\r\n");
strcat(msg, buf);
/*
- * $Id: client_side.cc,v 1.74 1996/12/14 18:56:03 wessels Exp $
+ * $Id: client_side.cc,v 1.75 1996/12/17 07:16:53 wessels Exp $
*
* DEBUG: section 33 Client-side Routines
* AUTHOR: Duane Wessels
return 1;
}
}
+
+char *
+clientConstructTraceEcho(icpStateData * icpState)
+{
+ LOCAL_ARRAY(char, line, 256);
+ LOCAL_ARRAY(char, buf, 8192);
+ size_t len;
+ memset(buf, '\0', 8192);
+ sprintf(buf, "HTTP/1.0 200 OK\r\n");
+ sprintf(line, "Date: %s\r\n", mkrfc1123(squid_curtime));
+ strcat(buf, line);
+ sprintf(line, "Server: Squid/%s\r\n", SQUID_VERSION);
+ strcat(buf, line);
+ sprintf(line, "Content-Type: message/http\r\n");
+ strcat(buf, line);
+ strcat(buf, "\r\n");
+ len = strlen(buf);
+ httpBuildRequestHeader(icpState->request,
+ icpState->request,
+ NULL, /* entry */
+ icpState->request_hdr,
+ NULL, /* in_len */
+ buf + len,
+ 8192 - len,
+ icpState->fd);
+ return buf;
+}
/*
- * $Id: http.cc,v 1.138 1996/12/16 16:25:44 wessels Exp $
+ * $Id: http.cc,v 1.139 1996/12/17 07:16:54 wessels Exp $
*
* DEBUG: section 11 Hypertext Transfer Protocol (HTTP)
* AUTHOR: Harvest Derived
size_t l;
int hdr_flags = 0;
int cc_flags = 0;
+ int n;
const char *url = NULL;
debug(11, 3, "httpBuildRequestHeader: INPUT:\n%s\n", hdr_in);
} else if (strncasecmp(xbuf, "If-Modified-Since:", 18) == 0) {
if (EBIT_TEST(hdr_flags, HDR_IMS))
continue;
+ } else if (strncasecmp(xbuf, "Max-Forwards:", 13) == 0) {
+ if (orig_request->method == METHOD_TRACE) {
+ for (s = xbuf + 13; *s && isspace(*s); s++);
+ n = atoi(s);
+ sprintf(xbuf, "Max-Forwards: %d", n - 1);
+ }
}
httpAppendRequestHeader(hdr_out, xbuf, &len, out_sz - 512);
}
/*
- * $Id: ssl.cc,v 1.30 1996/12/16 16:23:42 wessels Exp $
+ * $Id: ssl.cc,v 1.31 1996/12/17 07:16:57 wessels Exp $
*
* DEBUG: section 26 Secure Sockets Layer Proxy
* AUTHOR: Duane Wessels
edge *g = NULL;
int fw_ip_match = IP_ALLOW;
if (ia && Config.firewall_ip_list)
- fw_ip_match = ip_access_check(ia->in_addrs[ia->cur], Config.firewall_ip_list);
+ fw_ip_match = ip_access_check(ia->in_addrs[ia->cur], Config.firewall_ip_list);
if ((e = Config.sslProxy)) {
- hierarchyNote(request, HIER_SSL_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_SSL_PARENT, 0, e->host);
} else if (matchInsideFirewall(request->host)) {
- hierarchyNote(request, HIER_DIRECT, 0, request->host);
+ hierarchyNote(request, HIER_DIRECT, 0, request->host);
} else if (fw_ip_match == IP_DENY) {
- hierarchyNote(request, HIER_DIRECT, 0, request->host);
+ hierarchyNote(request, HIER_DIRECT, 0, request->host);
} else if ((e = getDefaultParent(request))) {
- hierarchyNote(request, HIER_DEFAULT_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_DEFAULT_PARENT, 0, e->host);
} else if ((e = getSingleParent(request))) {
- hierarchyNote(request, HIER_SINGLE_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_SINGLE_PARENT, 0, e->host);
} else if ((e = getFirstUpParent(request))) {
- hierarchyNote(request, HIER_FIRSTUP_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_FIRSTUP_PARENT, 0, e->host);
}
sslState->proxying = e ? 1 : 0;
sslState->host = e ? e->host : request->host;
if (e == NULL) {
- sslState->port = request->port;
+ sslState->port = request->port;
} else if (e->http_port != 0) {
- sslState->port = e->http_port;
+ sslState->port = e->http_port;
} else if ((g = neighborFindByName(e->host))) {
- sslState->port = g->http_port;
+ sslState->port = g->http_port;
} else {
- sslState->port = CACHE_HTTP_PORT;
+ sslState->port = CACHE_HTTP_PORT;
}
ipcache_nbgethostbyname(sslState->host,
sslState->server.fd,
/*
- * $Id: store.cc,v 1.180 1996/12/15 03:29:44 wessels Exp $
+ * $Id: store.cc,v 1.181 1996/12/17 07:16:58 wessels Exp $
*
* DEBUG: section 20 Storeage Manager
* AUTHOR: Harvest Derived
return key_temp_buffer;
/* NOTREACHED */
break;
+ case METHOD_TRACE:
+ sprintf(key_temp_buffer, "/trace/%s", url);
+ return key_temp_buffer;
+ /* NOTREACHED */
+ break;
default:
debug_trap("storeGeneratePublicKey: Unsupported request method");
break;
/*
- * $Id: tunnel.cc,v 1.30 1996/12/16 16:23:42 wessels Exp $
+ * $Id: tunnel.cc,v 1.31 1996/12/17 07:16:57 wessels Exp $
*
* DEBUG: section 26 Secure Sockets Layer Proxy
* AUTHOR: Duane Wessels
edge *g = NULL;
int fw_ip_match = IP_ALLOW;
if (ia && Config.firewall_ip_list)
- fw_ip_match = ip_access_check(ia->in_addrs[ia->cur], Config.firewall_ip_list);
+ fw_ip_match = ip_access_check(ia->in_addrs[ia->cur], Config.firewall_ip_list);
if ((e = Config.sslProxy)) {
- hierarchyNote(request, HIER_SSL_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_SSL_PARENT, 0, e->host);
} else if (matchInsideFirewall(request->host)) {
- hierarchyNote(request, HIER_DIRECT, 0, request->host);
+ hierarchyNote(request, HIER_DIRECT, 0, request->host);
} else if (fw_ip_match == IP_DENY) {
- hierarchyNote(request, HIER_DIRECT, 0, request->host);
+ hierarchyNote(request, HIER_DIRECT, 0, request->host);
} else if ((e = getDefaultParent(request))) {
- hierarchyNote(request, HIER_DEFAULT_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_DEFAULT_PARENT, 0, e->host);
} else if ((e = getSingleParent(request))) {
- hierarchyNote(request, HIER_SINGLE_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_SINGLE_PARENT, 0, e->host);
} else if ((e = getFirstUpParent(request))) {
- hierarchyNote(request, HIER_FIRSTUP_PARENT, 0, e->host);
+ hierarchyNote(request, HIER_FIRSTUP_PARENT, 0, e->host);
}
sslState->proxying = e ? 1 : 0;
sslState->host = e ? e->host : request->host;
if (e == NULL) {
- sslState->port = request->port;
+ sslState->port = request->port;
} else if (e->http_port != 0) {
- sslState->port = e->http_port;
+ sslState->port = e->http_port;
} else if ((g = neighborFindByName(e->host))) {
- sslState->port = g->http_port;
+ sslState->port = g->http_port;
} else {
- sslState->port = CACHE_HTTP_PORT;
+ sslState->port = CACHE_HTTP_PORT;
}
ipcache_nbgethostbyname(sslState->host,
sslState->server.fd,
/*
- * $Id: url.cc,v 1.50 1996/12/05 21:23:57 wessels Exp $
+ * $Id: url.cc,v 1.51 1996/12/17 07:16:59 wessels Exp $
*
* DEBUG: section 23 URL Parsing
* AUTHOR: Duane Wessels
"POST",
"PUT",
"HEAD",
- "CONNECT"
+ "CONNECT",
+ "TRACE"
};
static char *ProtocolStr[] =
return METHOD_HEAD;
} else if (strcasecmp(s, "CONNECT") == 0) {
return METHOD_CONNECT;
+ } else if (strcasecmp(s, "TRACE") == 0) {
+ return METHOD_TRACE;
}
return METHOD_NONE;
}
request->port = (u_short) port;
xstrncpy(request->urlpath, urlpath, MAX_URL);
request->max_age = -1;
+ request->max_forwards = -1;
return request;
}
int rc = 0;
if (r->method == METHOD_CONNECT)
return 1;
+ if (r->method == METHOD_TRACE)
+ return 1;
switch (r->protocol) {
case PROTO_HTTP:
case PROTO_CACHEOBJ: