martin 97/10/21 08:46:25
Modified: src/main http_protocol.c http_request.c httpd.h
Log:
Encapsulatte internal representation of HTTP protocol number with a
HTTP_VERSION(major,minor) macro. Currently, this is backward compatible
to the algorithm used now (1000*major+minor
Reviewed by: Ken +1, Alexei +1, Jim +1
Revision Changes Path
1.167 +9 -6 apachen/src/main/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /home/cvs/apachen/src/main/http_protocol.c,v
retrieving revision 1.166
retrieving revision 1.167
diff -u -r1.166 -r1.167
--- http_protocol.c 1997/10/07 19:34:03 1.166
+++ http_protocol.c 1997/10/21 15:40:13 1.167
@@ -300,7 +300,7 @@
find_last_token(r->pool,
table_get(r->headers_out, "Transfer-Encoding"),
"chunked") ||
- ((r->proto_num >= 1001) && (r->chunked = 1))) &&
+ ((r->proto_num >= HTTP_VERSION(1,1)) && (r->chunked = 1))) &&
r->server->keep_alive &&
(r->server->keep_alive_timeout > 0) &&
((r->server->keep_alive_max == 0) ||
@@ -311,7 +311,7 @@
(!table_get(r->subprocess_env, "nokeepalive") ||
table_get(r->headers_in, "Via")) &&
((ka_sent = find_token(r->pool, conn, "keep-alive")) ||
- (r->proto_num >= 1001))
+ (r->proto_num >= HTTP_VERSION(1,1)))
) {
char header[256];
int left = r->server->keep_alive_max - r->connection->keepalives;
@@ -726,8 +726,11 @@
r->assbackwards = (ll[0] == '\0');
r->protocol = pstrdup(r->pool, ll[0] ? ll : "HTTP/0.9");
- sscanf(r->protocol, "HTTP/%d.%d", &major, &minor);
- r->proto_num = 1000 * major + minor;
+ if (2 == sscanf(r->protocol, "HTTP/%u.%u", &major, &minor)
+ && 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);
return 1;
}
@@ -1058,7 +1061,7 @@
* kluge around broken browsers when indicated by force-response-1.0
*/
if (r->proxyreq
- || (r->proto_num == 1000
+ || (r->proto_num == HTTP_VERSION(1,0)
&& table_get(r->subprocess_env, "force-response-1.0"))) {
protocol = "HTTP/1.0";
@@ -1385,7 +1388,7 @@
if (!r->read_chunked && (r->remaining <= 0))
return 0;
- if (r->proto_num >= 1001) { /* sending 100 Continue interim response */
+ if (r->proto_num >= HTTP_VERSION(1,1)) { /* sending 100 Continue interim
response */
bvputs(r->connection->client,
SERVER_PROTOCOL, " ", status_lines[0], "\015\012\015\012",
NULL);
1.90 +4 -4 apachen/src/main/http_request.c
Index: http_request.c
===================================================================
RCS file: /home/cvs/apachen/src/main/http_request.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -r1.89 -r1.90
--- http_request.c 1997/10/15 00:15:13 1.89
+++ http_request.c 1997/10/21 15:40:14 1.90
@@ -982,8 +982,8 @@
return;
}
- if ((!r->hostname && (r->proto_num >= 1001)) ||
- ((r->proto_num == 1001) && !table_get(r->headers_in, "Host"))) {
+ if ((!r->hostname && (r->proto_num >= HTTP_VERSION(1,1))) ||
+ ((r->proto_num == HTTP_VERSION(1,1)) && !table_get(r->headers_in,
"Host"))) {
/*
* Client sent us a HTTP/1.1 or later request without telling us the
* hostname, either with a full URL or a Host: header. We therefore
@@ -1027,8 +1027,8 @@
return;
}
- if (r->proto_num > 1000 && table_get(r->subprocess_env,
"downgrade-1.0")) {
- r->proto_num = 1000;
+ if (r->proto_num > HTTP_VERSION(1,0) && table_get(r->subprocess_env,
"downgrade-1.0")) {
+ r->proto_num = HTTP_VERSION(1,0);
}
/*
1.161 +5 -0 apachen/src/main/httpd.h
Index: httpd.h
===================================================================
RCS file: /home/cvs/apachen/src/main/httpd.h,v
retrieving revision 1.160
retrieving revision 1.161
diff -u -r1.160 -r1.161
--- httpd.h 1997/10/17 13:37:28 1.160
+++ httpd.h 1997/10/21 15:40:15 1.161
@@ -104,6 +104,11 @@
*/
+/* -- Internal representation for a HTTP protocol number, e.g., HTTP/1.1 --
*/
+
+#define HTTP_VERSION(major,minor) (1000*(major)+(minor))
+
+
/* -------------- Port number for server running standalone ---------------
*/
#define DEFAULT_PORT 80
Modified: src/modules/standard mod_negotiation.c
Log:
Encapsulate internal representation of HTTP protocol number with a
HTTP_VERSION(major,minor) macro.
Currently, this is backward compatible to the algorithm used now
(1000*major+minor
Reviewed by: Ken +1, Alexei +1, Jim +1
Revision Changes Path
1.60 +2 -2 apachen/src/modules/standard/mod_negotiation.c
Index: mod_negotiation.c
===================================================================
RCS file: /home/cvs/apachen/src/modules/standard/mod_negotiation.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- mod_negotiation.c 1997/10/17 19:26:56 1.59
+++ mod_negotiation.c 1997/10/21 15:46:24 1.60
@@ -2064,7 +2064,7 @@
* HTTP/1.0, we can't allow caching at all. NB that we merge the
* header in case some other module negotiates on something else.
*/
- if (!do_cache_negotiated_docs(r->server) && (r->proto_num < 1001)) {
+ if (!do_cache_negotiated_docs(r->server) && (r->proto_num <
HTTP_VERSION(1,1))) {
r->no_cache = 1;
}
@@ -2170,7 +2170,7 @@
/* Otherwise, use it. */
- if ((!do_cache_negotiated_docs(r->server) && (r->proto_num < 1001))
+ if ((!do_cache_negotiated_docs(r->server) && (r->proto_num <
HTTP_VERSION(1,1)))
&& neg->count_multiviews_variants != 1) {
r->no_cache = 1;
}