cvs commit: apache-1.3/src/include http_core.h
dgaudet 99/03/10 12:18:59 Modified:src/include http_core.h Log: oops this was not supposed to be committed Revision ChangesPath 1.55 +0 -3 apache-1.3/src/include/http_core.h Index: http_core.h === RCS file: /home/cvs/apache-1.3/src/include/http_core.h,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- http_core.h 1999/03/10 17:42:40 1.54 +++ http_core.h 1999/03/10 20:18:55 1.55 @@ -238,9 +238,6 @@ */ unsigned d_is_fnmatch : 1; -/* takes sense only if use_canonical_name is on */ -unsigned use_canonical_port : 1; - /* System Resource Control */ #ifdef RLIMIT_CPU struct rlimit *limit_cpu;
cvs commit: apache-1.3/src/include http_core.h
coar98/10/16 00:04:46 Modified:src CHANGES src/main http_core.c http_protocol.c src/include http_core.h Log: Revert the Options DebugServerErrors patch. Not the right solution.. Revision ChangesPath 1.1109+1 -2 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1108 retrieving revision 1.1109 diff -u -r1.1108 -r1.1109 --- CHANGES 1998/10/15 08:01:52 1.1108 +++ CHANGES 1998/10/16 07:04:41 1.1109 @@ -2,8 +2,7 @@ *) Fix per-directory config merging for cases in which a 500 error is encountered in an .htaccess file somewhere down the tree. - Also make display of error details on 500 errors a customisable - offense. [Ken Coar] PR#2409, 3173 + [Ken Coar] PR#2409 *) Minor performance improvement to ap_escape_html(). [Roy Fielding] 1.234 +0 -3 apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.233 retrieving revision 1.234 diff -u -r1.233 -r1.234 --- http_core.c 1998/10/15 07:58:23 1.233 +++ http_core.c 1998/10/16 07:04:43 1.234 @@ -994,9 +994,6 @@ else if (!strcasecmp(w, "RunScripts")) { /* AI backcompat. Yuck */ opt = OPT_MULTI|OPT_EXECCGI; } - else if (!strcasecmp(w, "DebugServerErrors")) { - opt = OPT_DEBUG500; - } else if (!strcasecmp(w, "None")) { opt = OPT_NONE; } 1.245 +1 -3 apache-1.3/src/main/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v retrieving revision 1.244 retrieving revision 1.245 diff -u -r1.244 -r1.245 --- http_protocol.c 1998/10/15 07:58:24 1.244 +++ http_protocol.c 1998/10/16 07:04:44 1.245 @@ -2385,9 +2385,7 @@ " and inform them of the time the error occurred,\n" "and anything you might have done that may have\n" "caused the error.\n", NULL); - if ((ap_allow_options(r) & OPT_DEBUG500) -&& (error_notes = ap_table_get(r->notes, "error-notes")) -!= NULL) { + if ((error_notes = ap_table_get(r->notes, "error-notes")) != NULL) { ap_bvputs(fd, error_notes, "\n", NULL); } break; 1.50 +1 -2 apache-1.3/src/include/http_core.h Index: http_core.h === RCS file: /export/home/cvs/apache-1.3/src/include/http_core.h,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- http_core.h 1998/10/15 07:58:23 1.49 +++ http_core.h 1998/10/16 07:04:45 1.50 @@ -83,7 +83,6 @@ #define OPT_INCNOEXEC 32 #define OPT_SYM_OWNER 64 #define OPT_MULTI 128 -#define OPT_DEBUG500 256 #define OPT_ALL (OPT_INDEXES|OPT_INCLUDES|OPT_SYM_LINKS|OPT_EXECCGI) /* options for get_remote_host() */ @@ -166,7 +165,7 @@ /* Per-directory configuration */ -typedef unsigned int allow_options_t; +typedef unsigned char allow_options_t; typedef unsigned char overrides_t; typedef struct {
cvs commit: apache-1.3/src/include http_core.h httpd.h
dgaudet 98/03/26 13:17:42 Modified:src CHANGES src/include http_core.h httpd.h Log: I think it was Marc that pointed this out ages ago... I don't remember. We need to mark various bitfields as signed to follow the spec. Revision ChangesPath 1.736 +4 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.735 retrieving revision 1.736 diff -u -r1.735 -r1.736 --- CHANGES 1998/03/26 21:08:35 1.735 +++ CHANGES 1998/03/26 21:17:37 1.736 @@ -1,5 +1,9 @@ Changes with Apache 1.3b6 + *) ANSI C doesn't guarantee that "int foo : 2" in a structure will + be a signed bitfield. So mark a few bitfields as signed to + ensure correct code. [Dean Gaudet] + *) The default for HostnameLookups was changed to Off, but there was a problem and it wasn't taking effect. [Dean Gaudet] 1.40 +3 -3 apache-1.3/src/include/http_core.h Index: http_core.h === RCS file: /export/home/cvs/apache-1.3/src/include/http_core.h,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- http_core.h 1998/03/17 19:38:40 1.39 +++ http_core.h 1998/03/26 21:17:40 1.40 @@ -184,11 +184,11 @@ #define HOSTNAME_LOOKUP_ON 1 #define HOSTNAME_LOOKUP_DOUBLE 2 #define HOSTNAME_LOOKUP_UNSET3 -int hostname_lookups : 4; +unsigned int hostname_lookups : 4; -int do_rfc1413 : 2; /* See if client is advertising a username? */ +signed int do_rfc1413 : 2; /* See if client is advertising a username? */ -int content_md5 : 2; /* calculate Content-MD5? */ +signed int content_md5 : 2; /* calculate Content-MD5? */ unsigned use_canonical_name : 2; /* bit 0 = on/off, bit 1 = unset/set */ 1.200 +2 -2 apache-1.3/src/include/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache-1.3/src/include/httpd.h,v retrieving revision 1.199 retrieving revision 1.200 diff -u -r1.199 -r1.200 --- httpd.h 1998/03/17 07:54:13 1.199 +++ httpd.h 1998/03/26 21:17:40 1.200 @@ -722,10 +722,10 @@ char *auth_type; /* Ditto. */ unsigned aborted:1; /* Are we still talking? */ -int keepalive:2; /* Are we using HTTP Keep-Alive? +signed int keepalive:2; /* Are we using HTTP Keep-Alive? * -1 fatal error, 0 undecided, 1 yes */ unsigned keptalive:1;/* Did we use HTTP Keep-Alive? */ -int double_reverse:2;/* have we done double-reverse DNS? +signed int double_reverse:2;/* have we done double-reverse DNS? * -1 yes/failure, 0 not yet, 1 yes/success */ int keepalives; /* How many times have we used it? */ };
cvs commit: apache-1.3/src/include http_core.h
dgaudet 98/02/02 11:46:55 Modified:src/main http_core.c src/include http_core.h Log: Aha. This is the way to fix the options + / options - problems such as: Options -indexes Options +indexes No longer do -'ves have priority over +'ves. We just record the last change to each bit. Revision ChangesPath 1.155 +17 -6 apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.154 retrieving revision 1.155 diff -u -r1.154 -r1.155 --- http_core.c 1998/02/01 22:05:36 1.154 +++ http_core.c 1998/02/02 19:46:53 1.155 @@ -160,13 +160,21 @@ conf->d_components = new->d_components; conf->r = new->r; -if (!(new->opts & OPT_UNSET)) conf->opts = new->opts; -if (new->opts_add) { - conf->opts |= new->opts_add; - conf->opts &= ~OPT_UNSET; +if (new->opts & OPT_UNSET) { + /* there was no explicit setting of new->opts, so we merge + * preserve the invariant (opts_add & opts_remove) == 0 + */ + conf->opts_add = (conf->opts_add & ~new->opts_remove) | new->opts_add; + conf->opts_remove = (conf->opts_remove & ~new->opts_add) | new->opts_remove; + conf->opts = (conf->opts & ~conf->opts_remove) | conf->opts_add; } -if (new->opts_remove) { - conf->opts &= ~(new->opts_remove | OPT_UNSET); +else { + /* otherwise we just copy, because an explicit opts setting + * overrides all earlier +/- modifiers + */ + conf->opts = new->opts; + conf->opts_add = new->opts_add; + conf->opts_remove = new->opts_remove; } if (!(new->override & OR_UNSET)) conf->override = new->override; @@ -801,12 +809,15 @@ else return pstrcat (cmd->pool, "Illegal option ", w, NULL); + /* we ensure the invariant (d->opts_add & d->opts_remove) == 0 */ if (action == '-') { d->opts_remove |= opt; + d->opts_add &= ~opt; d->opts &= ~opt; } else if (action == '+') { d->opts_add |= opt; + d->opts_remove &= ~opt; d->opts |= opt; } else { 1.35 +7 -0 apache-1.3/src/include/http_core.h Index: http_core.h === RCS file: /export/home/cvs/apache-1.3/src/include/http_core.h,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- http_core.h 1998/02/01 22:05:34 1.34 +++ http_core.h 1998/02/02 19:46:55 1.35 @@ -145,6 +145,13 @@ /* the number of slashes in d */ unsigned d_components; +/* If (opts & OPT_UNSET) then no absolute assignment to options has + * been made. + * invariant: (opts_add & opts_remove) == 0 + * Which said another way means that the last relative (options + or -) + * assignment made to each bit is recorded in exactly one of opts_add + * or opts_remove. + */ allow_options_t opts; allow_options_t opts_add; allow_options_t opts_remove;