fielding 99/02/09 04:30:05
Modified: src CHANGES
src/include ap_mmn.h httpd.h
src/main gen_test_char.c http_protocol.c util.c
Log:
Reverse prior commit of ap_find_opaque_token() so that it can be replaced
by a slightly different method using ap_get_list_item().
Revision Changes Path
1.1240 +0 -3 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1239
retrieving revision 1.1240
diff -u -r1.1239 -r1.1240
--- CHANGES 1999/02/08 15:12:16 1.1239
+++ CHANGES 1999/02/09 12:29:48 1.1240
@@ -65,9 +65,6 @@
the NDBM library looks like Berkeley-DB based.
[Ralf S. Engelschall] PR#3773
- *) Fix checking of ETags and other opaque 'tokens' by adding
- ap_find_opaque_token(). PR#2065, 3657 [Ken Coar]
-
*) Add ability to handle DES or MD5 authentication passwords.
[Ryan Bloom <[EMAIL PROTECTED]>]
1.27 +3 -6 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.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- ap_mmn.h 1999/02/08 15:12:18 1.26
+++ ap_mmn.h 1999/02/09 12:29:52 1.27
@@ -203,13 +203,10 @@
* scan_script_header -> ap_scan_script_header_err
* - reordered entries in request_rec that were waiting
* for a non-binary-compatible release.
- * 19990108.1 - add ap_find_opaque_token() for things like ETags
- * (1.3.5-dev) which can contain opaque quoted strings, and
- * ap_MD5Encode() for MD5 password handling.
+ * (1.3.5-dev)
+ * 19990108.1 - add ap_MD5Encode() for MD5 password handling.
* 19990108.2 - add ap_validate_password() and change
ap_MD5Encode()
- * (1.3.5-dev) to use a stronger algorithm (which is incompatible
- * with the one introduced [but not released] with
- * 19990108-1).
+ * to use a stronger algorithm.
* 19990108.3 - add ap_find_list_item() and ap_get_list_item()
*/
1.268 +0 -2 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.267
retrieving revision 1.268
diff -u -r1.267 -r1.268
--- httpd.h 1999/02/08 15:12:18 1.267
+++ httpd.h 1999/02/09 12:29:53 1.268
@@ -936,8 +936,6 @@
API_EXPORT(char *) ap_get_list_item(pool *p, const char **field);
API_EXPORT(char *) ap_get_token(pool *p, const char **accept_line, int
accept_white);
API_EXPORT(int) ap_find_token(pool *p, const char *line, const char *tok);
-API_EXPORT(int) ap_find_opaque_token(pool *p, const char *line,
- const char *tok);
API_EXPORT(int) ap_find_last_token(pool *p, const char *line, const char
*tok);
API_EXPORT(int) ap_is_url(const char *u);
1.6 +1 -9 apache-1.3/src/main/gen_test_char.c
Index: gen_test_char.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/gen_test_char.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- gen_test_char.c 1999/01/27 12:16:01 1.5
+++ gen_test_char.c 1999/02/09 12:29:56 1.6
@@ -8,7 +8,6 @@
#define T_ESCAPE_PATH_SEGMENT (0x02)
#define T_OS_ESCAPE_PATH (0x04)
#define T_HTTP_TOKEN_STOP (0x08)
-#define T_HTTP_OPAQUETOKEN_STOP (0x10)
int main(int argc, char *argv[])
{
@@ -21,15 +20,13 @@
"#define T_ESCAPE_PATH_SEGMENT (%u)\n"
"#define T_OS_ESCAPE_PATH (%u)\n"
"#define T_HTTP_TOKEN_STOP (%u)\n"
-"#define T_HTTP_OPAQUETOKEN_STOP (%u)\n"
"\n"
"static const unsigned char test_char_table[256] = {\n"
" 0,",
T_ESCAPE_SHELL_CMD,
T_ESCAPE_PATH_SEGMENT,
T_OS_ESCAPE_PATH,
- T_HTTP_TOKEN_STOP,
- T_HTTP_OPAQUETOKEN_STOP);
+ T_HTTP_TOKEN_STOP);
/* we explicitly dealt with NUL above
* in case some strchr() do bogosity with it */
@@ -55,11 +52,6 @@
/* these are the "tspecials" from RFC2068 */
if (ap_iscntrl(c) || strchr(" \t()<>@,;:\\/[]?={}", c)) {
flags |= T_HTTP_TOKEN_STOP;
- }
-
- /* some tokens (like etags) are opaque strings; stop at the end */
- if (ap_iscntrl(c) || strchr(" ,", c)) {
- flags |= T_HTTP_OPAQUETOKEN_STOP;
}
printf("%u%c", flags, (c < 255) ? ',' : ' ');
1.256 +2 -4 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.255
retrieving revision 1.256
diff -u -r1.255 -r1.256
--- http_protocol.c 1999/02/07 21:24:57 1.255
+++ http_protocol.c 1999/02/09 12:29:57 1.256
@@ -404,8 +404,7 @@
*/
if ((if_match = ap_table_get(r->headers_in, "If-Match")) != NULL) {
if ((etag == NULL) ||
- ((if_match[0] != '*')
- && !ap_find_opaque_token(r->pool, if_match, etag))) {
+ ((if_match[0] != '*') && !ap_find_token(r->pool, if_match,
etag))) {
return HTTP_PRECONDITION_FAILED;
}
}
@@ -438,8 +437,7 @@
int rstatus;
if ((if_nonematch[0] == '*')
- || ((etag != NULL)
- && ap_find_opaque_token(r->pool, if_nonematch, etag))) {
+ || ((etag != NULL) && ap_find_token(r->pool, if_nonematch,
etag))) {
rstatus = (r->method_number == M_GET) ? HTTP_NOT_MODIFIED
: HTTP_PRECONDITION_FAILED;
return rstatus;
1.149 +0 -61 apache-1.3/src/main/util.c
Index: util.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/util.c,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -r1.148 -r1.149
--- util.c 1999/02/08 15:12:19 1.148
+++ util.c 1999/02/09 12:29:58 1.149
@@ -1209,67 +1209,6 @@
}
}
-/*
- * Find opaque HTTP tokens, which have no internal semantics and end
- * at the first unquoted ',' or ' '.
- */
-API_EXPORT(int) ap_find_opaque_token(pool *p, const char *line,
- const char *tok)
-{
- const unsigned char *start_token;
- const unsigned char *s;
- char stop_quote = '\0';
-
- if (!line) {
- return 0;
- }
-
- s = (const unsigned char *)line;
- for (;;) {
- /*
- * Find start of token, skip all stop characters, note NUL
- * isn't a token stop, so we don't need to test for it
- */
- while (TEST_CHAR(*s, T_HTTP_OPAQUETOKEN_STOP)) {
- ++s;
- }
- if (!*s) {
- return 0;
- }
- start_token = s;
- /*
- * Find end of the token
- */
- while (*s) {
- /*
- * If we see the beginning of a quoted string ("foo" or <foo>),
- * mark the end character so we know when to stop skipping.
- */
- if (!stop_quote && ((*s == '"') || (*s == '<'))) {
- stop_quote = (*s == '"') ? '"' : '>';
- }
- else if (*s == stop_quote) {
- stop_quote = '\0';
- }
- /*
- * If we're not inside a quoted string, check to see if we're
- * at the end of the token.
- */
- else if (!stop_quote && TEST_CHAR(*s, T_HTTP_OPAQUETOKEN_STOP)) {
- break;
- }
- ++s;
- }
- if (!strncmp((const char *)start_token, (const char *)tok,
- s - start_token)) {
- return 1;
- }
- if (!*s) {
- return 0;
- }
- }
-}
-
API_EXPORT(int) ap_find_last_token(pool *p, const char *line, const char
*tok)
{