summaryrefslogtreecommitdiff
path: root/src/reqs.c
diff options
context:
space:
mode:
authorRobert James Kaes <rjkaes@users.sourceforge.net>2003-06-20 17:02:13 +0000
committerRobert James Kaes <rjkaes@users.sourceforge.net>2003-06-20 17:02:13 +0000
commit4c9141aac6b60eab1a0113d45ac059a78097b0f7 (patch)
treef94631c1b13568855c0c9f7575a32fda5798ae4f /src/reqs.c
parent0d3962f1f069845c2f396ca2450d9529f27d556b (diff)
downloadtinyproxy-4c9141aac6b60eab1a0113d45ac059a78097b0f7.tar.gz
tinyproxy-4c9141aac6b60eab1a0113d45ac059a78097b0f7.zip
Removed the "ViaHeader" directive and replaced it with the
"ViaProxyName" directive. The "Via" HTTP header is _required_ by the HTTP spec, so the code has been changed to always send the header. However, including the proxy's host name could be considered a security threat, so the "ViaProxyName" directive is used to set the token sent in the "Via" header. If the directive is not enabled the proxy's host name will be used.
Diffstat (limited to 'src/reqs.c')
-rw-r--r--src/reqs.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/reqs.c b/src/reqs.c
index a54535c..2a2f603 100644
--- a/src/reqs.c
+++ b/src/reqs.c
@@ -1,4 +1,4 @@
-/* $Id: reqs.c,v 1.103 2003-06-06 16:14:50 rjkaes Exp $
+/* $Id: reqs.c,v 1.104 2003-06-20 17:02:13 rjkaes Exp $
*
* This is where all the work in tinyproxy is actually done. Incoming
* connections have a new child created for them. The child then
@@ -987,8 +987,8 @@ get_content_length(hashmap_t hashofheaders)
}
/*
- * Search for Via head in a hash of headers and either write a new Via header,
- * or append our information to the end of an existing Via header.
+ * Search for Via header in a hash of headers and either write a new Via
+ * header, or append our information to the end of an existing Via header.
*
* FIXME: Need to add code to "hide" our internal information for security
* purposes.
@@ -998,11 +998,15 @@ write_via_header(int fd, hashmap_t hashofheaders,
unsigned int major, unsigned int minor)
{
ssize_t len;
- char hostname[128];
+ char hostname[512];
char *data;
int ret;
- gethostname(hostname, sizeof(hostname));
+ if (config.via_proxy_name) {
+ strlcpy(hostname, config.via_proxy_name, sizeof(hostname));
+ } else if (gethostname(hostname, sizeof(hostname)) < 0) {
+ strcpy(hostname, "unknown");
+ }
/*
* See if there is a "Via" header. If so, again we need to do a bit
@@ -1089,17 +1093,15 @@ process_client_headers(struct conn_s *connptr, hashmap_t hashofheaders)
}
/* Send, or add the Via header */
- if (config.via_http_header) {
- ret = write_via_header(connptr->server_fd, hashofheaders,
- connptr->protocol.major,
- connptr->protocol.minor);
- if (ret < 0) {
- indicate_http_error(connptr, 503,
- "Could not send data to remote server",
- "detail", "A network error occurred while trying to write data to the remote web server.",
- NULL);
- goto PULL_CLIENT_DATA;
- }
+ ret = write_via_header(connptr->server_fd, hashofheaders,
+ connptr->protocol.major,
+ connptr->protocol.minor);
+ if (ret < 0) {
+ indicate_http_error(connptr, 503,
+ "Could not send data to remote server",
+ "detail", "A network error occurred while trying to write data to the remote web server.",
+ NULL);
+ goto PULL_CLIENT_DATA;
}
/*
@@ -1239,13 +1241,11 @@ process_server_headers(struct conn_s *connptr)
}
/* Send, or add the Via header */
- if (config.via_http_header) {
- ret = write_via_header(connptr->client_fd, hashofheaders,
- connptr->protocol.major,
- connptr->protocol.minor);
- if (ret < 0)
- goto ERROR_EXIT;
- }
+ ret = write_via_header(connptr->client_fd, hashofheaders,
+ connptr->protocol.major,
+ connptr->protocol.minor);
+ if (ret < 0)
+ goto ERROR_EXIT;
/*
* All right, output all the remaining headers to the client.