summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2002-09-17 03:14:57 +0200
committerJim Jagielski <jim@apache.org>2002-09-17 03:14:57 +0200
commit6453fb2a05cccfa05b9555ef4fea0f22d61df8a1 (patch)
tree03d84fd0531eadc15953b9fb50caffb243e96c61 /server
parentUpdate after the tag. (diff)
downloadapache2-6453fb2a05cccfa05b9555ef4fea0f22d61df8a1.tar.xz
apache2-6453fb2a05cccfa05b9555ef4fea0f22d61df8a1.zip
The protocol version (eg: HTTP/1.1) in the request line parsing
is now case insensitive. Before, 'http/1.1' would silently be forced to HTTP/1.0 PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96857 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server')
-rw-r--r--server/protocol.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/server/protocol.c b/server/protocol.c
index b228e81127..b7db987913 100644
--- a/server/protocol.c
+++ b/server/protocol.c
@@ -642,6 +642,7 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb)
conn_rec *conn = r->connection;
#endif
int major = 1, minor = 0; /* Assume HTTP/1.0 if non-"HTTP" protocol */
+ char http[5];
apr_size_t len;
/* Read past empty lines until we get a real request line,
@@ -732,8 +733,9 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb)
&& apr_isdigit(pro[7])) {
r->proto_num = HTTP_VERSION(pro[5] - '0', pro[7] - '0');
}
- else if (2 == sscanf(r->protocol, "HTTP/%u.%u", &major, &minor)
- && minor < HTTP_VERSION(1, 0)) /* don't allow HTTP/0.1000 */
+ else if (3 == sscanf(r->protocol, "%4s/%u.%u", http, &major, &minor)
+ && (strcasecmp("http", http) == 0)
+ && (minor < HTTP_VERSION(1, 0)) ) /* don't allow HTTP/0.1000 */
r->proto_num = HTTP_VERSION(major, minor);
else
r->proto_num = HTTP_VERSION(1, 0);