; previously an empty header would make all
+ values acceptable instead of unacceptable.
+ - allowed for q values in Accept-Encoding
+ - added support for transparent content negotiation (rfc2295 and
+ rfc2296) (though we do not implement all features in these drafts,
+ e.g. no feature negotiation). Removed old experimental version.
+ - implemented 'structured entity tags' for better cache correctness
+ (structured entity tags ensure that caches which can deal with Vary
+ will (eventually) be updated if the set of variants on the server
+ is changed)
+ - this involved adding a vlist_validator element to request_rec
+ - this involved adding the ap_make_etag() function to the global API
+ - modified guessing of charsets used by Apache negotiation algorithm
+ to guess 'no charset' if the variant is not a text/* type
+ - added code to sort multiviews variants into a canonical order so that
+ negotiation results are consistent across backup/restores and mirrors
+ - removed possibility of a type map file resolving to another type map
+ file as its best variant
+ [Koen Holtman, Roy Fielding, Lars Eilebrecht] PR#3451, 1987
+
*) RFC2396 allows the syntax http://host:/path (with no port number)
but the proxy disallowed it (ap_proxy_canon_netloc()).
[David Kristol [EMAIL PROTECTED]] PR#3530
1.14 +3 -1 apache-1.3/src/include/ap_mmn.h
Index: ap_mmn.h
===
RCS file: /home/cvs/apache-1.3/src/include/ap_mmn.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ap_mmn.h 1998/12/12 05:26:02 1.13
+++ ap_mmn.h 1998/12/29 09:46:15 1.14
@@ -190,10 +190,12 @@
*as of this rev. See scoreboard.h for
documentation.
* 19981211 - DSO changes -- added ap_single_module_configure()
*-- added ap_single_module_init()
+ * 19981229 - mod_negotiation overhaul -- added ap_make_etag()
+ *and added vlist_validator to request_rec.
*/
#ifndef MODULE_MAGIC_NUMBER_MAJOR
-#define MODULE_MAGIC_NUMBER_MAJOR 19981211
+#define MODULE_MAGIC_NUMBER_MAJOR 19981229
#endif
#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
#define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR/* backward
compat */
1.47 +1 -0 apache-1.3/src/include/http_protocol.h
Index: http_protocol.h
===
RCS file: /home/cvs/apache-1.3/src/include/http_protocol.h,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- http_protocol.h 1998/11/08 09:51:09 1.46
+++ http_protocol.h 1998/12/29 09:46:15 1.47
@@ -115,6 +115,7 @@
API_EXPORT(int) ap_set_content_length(request_rec *r, long length);
API_EXPORT(int) ap_set_keepalive(request_rec *r);
API_EXPORT(time_t) ap_rationalize_mtime(request_rec *r, time_t mtime);
+API_EXPORT(char *) ap_make_etag(request_rec *r, int force_weak);
API_EXPORT(void) ap_set_etag(request_rec *r);
API_EXPORT(void) ap_set_last_modified(request_rec *r);
API_EXPORT(int) ap_meets_conditions(request_rec *r);
1.254 +1 -0 apache-1.3/src/include/httpd.h
Index: httpd.h
===
RCS file: /home/cvs/apache-1.3/src/include/httpd.h,v
retrieving revision 1.253
retrieving revision 1.254
diff -u -r1.253 -r1.254
--- httpd.h 1998/12/01 23:59:59 1.253
+++ httpd.h 1998/12/29 09:46:15 1.254
@@ -778,6 +778,7 @@
* binary compatibility for some other reason.
*/
unsigned expecting_100; /* is client waiting for a 100 response? */
+char *vlist_validator; /* variant list validator (if negotiated) */
};
1.251 +52 -7 apache-1.3/src/main/http_protocol.c
Index: http_protocol.c
===
RCS file: /home/cvs/apache-1.3/src/main/http_protocol.c,v
retrieving revision 1.250
retrieving revision 1.251
diff -u -r1.250 -r1.251
--- http_protocol.c 1998/12/28 12:51:09 1.250
+++ http_protocol.c 1998/12/29 09:46:16 1.251
@@ -469,7 +469,7 @@
* could be modified again in as short an interval. We rationalize the
* modification time we're given to keep it from being in the future.
*/
-API_EXPORT(void) ap_set_etag(request_rec *r)
+API_EXPORT(char *) ap_make_etag(request_rec *r, int force_weak)
{
char *etag;
char *weak;
@@ -487,11 +487,11 @@
* would be incorrect.
*/
-weak = (r-request_time - r-mtime 1) ? : W/;
+weak = ((r-request_time - r-mtime 1) !force_weak