cvs commit: apache-1.3/src/modules/proxy mod_proxy.c proxy_ftp.c proxy_util.c

1999-03-10 Thread dgaudet
dgaudet 99/03/10 09:42:47

  Modified:src  CHANGES
   src/include ap_ctype.h ap_mmn.h http_core.h
   src/main http_protocol.c util.c util_date.c
   src/modules/proxy mod_proxy.c proxy_ftp.c proxy_util.c
  Log:
  somehow we missed implementing ap_isxdigit... oh and there was a stray
  use of isdigit()
  
  Revision  ChangesPath
  1.1277+3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1276
  retrieving revision 1.1277
  diff -u -r1.1276 -r1.1277
  --- CHANGES   1999/03/10 13:37:58 1.1276
  +++ CHANGES   1999/03/10 17:42:35 1.1277
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.5
   
  +  *) ap_isxdigit was somehow neglected when adding the ap_isfoo() macros
  + for 8-bit safeness.  [Dean Gaudet]
  +
 *) Use -fPIC instead of -fpic on Solaris and SunOS for compiling DSOs
because SPARCs have a small machine-specific maximum size for the Global
Offset Table which is often exceeded when compiling one of the larger
  
  
  
  1.5   +1 -0  apache-1.3/src/include/ap_ctype.h
  
  Index: ap_ctype.h
  ===
  RCS file: /home/cvs/apache-1.3/src/include/ap_ctype.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ap_ctype.h1999/01/01 19:04:39 1.4
  +++ ap_ctype.h1999/03/10 17:42:39 1.5
  @@ -79,6 +79,7 @@
   #define ap_ispunct(c) (ispunct(((unsigned char)(c
   #define ap_isspace(c) (isspace(((unsigned char)(c
   #define ap_isupper(c) (isupper(((unsigned char)(c
  +#define ap_isxdigit(c) (isxdigit(((unsigned char)(c
   #define ap_tolower(c) (tolower(((unsigned char)(c
   #define ap_toupper(c) (toupper(((unsigned char)(c
   
  
  
  
  1.31  +2 -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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- ap_mmn.h  1999/03/08 15:43:59 1.30
  +++ ap_mmn.h  1999/03/10 17:42:40 1.31
  @@ -212,6 +212,7 @@
* 19990108.5   - added ap_sub_req_method_uri() and added const to 
the
*definition of method in request_rec.
* 19990108.6   - SIGPIPE is now ignored by the core server.
  + * 19990108.7   - ap_isxdigit added
*/
   
   #define MODULE_MAGIC_COOKIE 0x41503133UL /* AP13 */
  @@ -219,7 +220,7 @@
   #ifndef MODULE_MAGIC_NUMBER_MAJOR
   #define MODULE_MAGIC_NUMBER_MAJOR 19990108
   #endif
  -#define MODULE_MAGIC_NUMBER_MINOR 6 /* 0...n */
  +#define MODULE_MAGIC_NUMBER_MINOR 7 /* 0...n */
   #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR/* backward 
compat */
   
   /* Useful for testing for features. */
  
  
  
  1.54  +3 -0  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.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- http_core.h   1999/02/05 00:37:48 1.53
  +++ http_core.h   1999/03/10 17:42:40 1.54
  @@ -238,6 +238,9 @@
*/
   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;
  
  
  
  1.261 +2 -2  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.260
  retrieving revision 1.261
  diff -u -r1.260 -r1.261
  --- http_protocol.c   1999/03/08 15:44:00 1.260
  +++ http_protocol.c   1999/03/10 17:42:42 1.261
  @@ -1664,7 +1664,7 @@
   {
   long chunksize = 0;
   
  -while (isxdigit(*b)) {
  +while (ap_isxdigit(*b)) {
   int xvalue = 0;
   
   if (*b = '0'  *b = '9')
  @@ -1742,7 +1742,7 @@
   
   chunk_start = getline(buffer, bufsiz, r-connection-client, 0);
   if ((chunk_start = 0) || (chunk_start = (bufsiz - 1))
  -|| !isxdigit(*buffer)) {
  +|| !ap_isxdigit(*buffer)) {
   r-connection-keepalive = -1;
   return -1;
   }
  
  
  
  1.155 +1 -1  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.154
  retrieving revision 1.155
  diff -u -r1.154 -r1.155
  --- util.c1999/03/10 12:11:57 1.154
  +++ util.c

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-10-30 Thread fielding
fielding98/10/30 14:41:28

  Modified:src  CHANGES
   src/main http_config.c http_protocol.c
   src/modules/proxy mod_proxy.c
  Log:
  Disable sending of error-notes on a 500 (Internal Server Error) response
  since it often includes file path info.  Enable sending of error-notes
  on a 501 (Method Not Implemented).
  
  http_config.c would respond with 501 (Method Not Implemented) if a
  content type handler was specified but could not be found, which
  should have been a 500 response.  Likewise, mod_proxy.c would responsd
  with a 501 if the URI scheme is unrecognized instead of the correct
  response of 403 (Forbidden).
  
  PR: 3173
  
  Revision  ChangesPath
  1.1130+10 -0 apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1129
  retrieving revision 1.1130
  diff -u -r1.1129 -r1.1130
  --- CHANGES   1998/10/30 03:08:52 1.1129
  +++ CHANGES   1998/10/30 22:41:21 1.1130
  @@ -1,5 +1,15 @@
   Changes with Apache 1.3.4
   
  +  *) Disable sending of error-notes on a 500 (Internal Server Error) response
  + since it often includes file path info.  Enable sending of error-notes
  + on a 501 (Method Not Implemented).  [Roy Fielding] PR#3173
  +
  +  *) http_config.c would respond with 501 (Method Not Implemented) if a
  + content type handler was specified but could not be found, which
  + should have been a 500 response.  Likewise, mod_proxy.c would responsd
  + with a 501 if the URI scheme is unrecognized instead of the correct
  + response of 403 (Forbidden).  [Roy Fielding]
  +
 *) SECURITY: Eliminate DoS attack when a bad URI path contains what
looks like a printf format escape.  [Marc Slemko, Studenten Net Twente]
   
  
  
  
  1.135 +3 -3  apache-1.3/src/main/http_config.c
  
  Index: http_config.c
  ===
  RCS file: /home/cvs/apache-1.3/src/main/http_config.c,v
  retrieving revision 1.134
  retrieving revision 1.135
  diff -u -r1.134 -r1.135
  --- http_config.c 1998/09/26 00:07:08 1.134
  +++ http_config.c 1998/10/30 22:41:24 1.135
  @@ -479,7 +479,7 @@
   const char *handler;
   char *p;
   size_t handler_len;
  -int result = NOT_IMPLEMENTED;
  +int result = HTTP_INTERNAL_SERVER_ERROR;
   
   if (r-handler) {
handler = r-handler;
  @@ -509,7 +509,7 @@
   }
   }
   
  -if (result == NOT_IMPLEMENTED  r-handler) {
  +if (result == HTTP_INTERNAL_SERVER_ERROR  r-handler) {
   ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
   handler \%s\ not found for: %s, r-handler, r-filename);
   }
  @@ -526,7 +526,7 @@
}
   }
   
  -return NOT_IMPLEMENTED;
  +return HTTP_INTERNAL_SERVER_ERROR;
   }
   
   /* One-time setup for precompiled modules --- NOT to be done on restart */
  
  
  
  1.247 +17 -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.246
  retrieving revision 1.247
  diff -u -r1.246 -r1.247
  --- http_protocol.c   1998/10/19 05:59:35 1.246
  +++ http_protocol.c   1998/10/30 22:41:24 1.247
  @@ -2297,10 +2297,13 @@
  ap_escape_html(r-pool, r-uri),
   evaluated to false.P\n, NULL);
break;
  - case NOT_IMPLEMENTED:
  + case HTTP_NOT_IMPLEMENTED:
ap_bvputs(fd, ap_escape_html(r-pool, r-method),  to ,
  ap_escape_html(r-pool, r-uri),
   not supported.P\n, NULL);
  + if ((error_notes = ap_table_get(r-notes, error-notes)) != NULL) {
  + ap_bvputs(fd, error_notes, P\n, NULL);
  + }
break;
case BAD_GATEWAY:
ap_bputs(The proxy server received an invalid\015\012, fd);
  @@ -2387,9 +2390,19 @@
 caused the error.P\n
 More information about this error may be available\n
 in the server error log.P\n, NULL);
  - if ((error_notes = ap_table_get(r-notes, error-notes)) != NULL) {
  - ap_bvputs(fd, error_notes, P\n, NULL);
  - }
  +  /*
  +   * It would be nice to give the user the information they need to
  +   * fix the problem directly since many users don't have access to
  +   * the error_log (think University sites) even though they can easily
  +   * get this error by misconfiguring an htaccess file.  However, the
  +   * error notes tend to include the real file pathname in this case,
  +   * which some people consider to be a breach of privacy.  Until we
  +   * can figure out a way to remove the pathname, leave this commented.

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c mod_proxy.h proxy_connect.c

1998-09-08 Thread martin
martin  98/09/08 14:15:57

  Modified:src  CHANGES
   htdocs/manual/mod mod_proxy.html
   htdocs/manual new_features_1_3.html
   src/modules/proxy mod_proxy.c mod_proxy.h proxy_connect.c
  Log:
  Sameer posted the AllowCONNECT back in march. I adapted it to default
  to ports 443 and 563 (for https:// and snews://) and wrote a description
  for the mod_proxy.html document.
  
  Submitted by: Sameer Parekh [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.1047+5 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1046
  retrieving revision 1.1047
  diff -u -r1.1046 -r1.1047
  --- CHANGES   1998/09/04 18:15:46 1.1046
  +++ CHANGES   1998/09/08 21:15:47 1.1047
  @@ -1,5 +1,10 @@
   Changes with Apache 1.3.2
   
  +  *) The proxy was refusing to serve CONNECT requests except to
  + port 443 (https://) and 563 (snews://). The new AllowCONNECT
  + directive allows the configuration of the ports to which a
  + CONNECT is allowed.  [Sameer Parekh, Martin Kraemer]
  +
 *) mod_expires will now act on content that is not sent from a file
on disk.  Previously it would never add an Expires: header to
any response that did not come from a file on disk; the only
  
  
  
  1.45  +43 -0 apache-1.3/htdocs/manual/mod/mod_proxy.html
  
  Index: mod_proxy.html
  ===
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_proxy.html,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- mod_proxy.html1998/08/16 20:51:52 1.44
  +++ mod_proxy.html1998/09/08 21:15:53 1.45
  @@ -45,6 +45,7 @@
   LIA HREF=#proxypassProxyPass/A
   LIA HREF=#proxypassreverseProxyPassReverse/A
   LIA HREF=#proxyblockProxyBlock/A
  +LIA HREF=#allowconnectAllowCONNECT/A
   LIA HREF=#proxyreceivebuffersizeProxyReceiveBufferSize/A
   LIA HREF=#noproxyNoProxy/A
   LIA HREF=#proxydomainProxyDomain/A
  @@ -266,6 +267,48 @@
HREF=mod_rewrite.html#RewriteRule
   TTmod_rewrite/TT/A because its doesn't depend on a corresponding
   SAMPProxyPass/SAMP directive.
  +
  +HR
  +
  +H2A NAME=allowconnectAllowCONNECT/A/H2
  +A
  + HREF=directive-dict.html#Syntax
  + REL=Help
  +STRONGSyntax:/STRONG/A AllowCONNECT EMlt;port listgt;/EMBR
  +A
  + HREF=directive-dict.html#Default
  + REL=Help
  +STRONGDefault:/STRONG/A EMSAMPAllowCONNECT/SAMP 443 563/EMBR
  +A
  + HREF=directive-dict.html#Context
  + REL=Help
  +STRONGContext:/STRONG/A server config, virtual hostBR
  +A
  + HREF=directive-dict.html#Override
  + REL=Help
  +STRONGOverride:/STRONG/A EMNot applicable/EMBR
  +A
  + HREF=directive-dict.html#Status
  + REL=Help
  +STRONGStatus:/STRONG/A BaseBR
  +A
  + HREF=directive-dict.html#Module
  + REL=Help
  +STRONGModule:/STRONG/A mod_proxyBR
  +A
  + HREF=directive-dict.html#Compatibility
  + REL=Help
  +STRONGCompatibility:/STRONG/A SAMPAllowCONNECT/SAMP is only
  +available in Apache 1.3.2 and later.P
  +
  +The SAMPAllowCONNECT/SAMP directive specifies a list of port numbers
  +to which the proxy SAMPCONNECT/SAMP method may connect.
  +Today's browsers use this method when a EMhttps/EM connection
  +is requested and proxy tunneling over EMhttp/EM is in effect.BR
  +By default, only the default https port (443) and the default
  +snews port (563) are enabled. Use the SAMPAllowCONNECT/SAMP
  +directive to overrride this default and allow connections to the
  +listed ports only.
   
   HR
   
  
  
  
  1.70  +4 -0  apache-1.3/htdocs/manual/new_features_1_3.html
  
  Index: new_features_1_3.html
  ===
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/new_features_1_3.html,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- new_features_1_3.html 1998/09/03 18:05:26 1.69
  +++ new_features_1_3.html 1998/09/08 21:15:54 1.70
  @@ -228,6 +228,10 @@
   authentification. That is slightly more secure than specifying
   the authentication information as part of the request URL,
   where it could be logged in plaintext by older proxy servers.
  +LIThe new SAMPAllowCONNECT/SAMP directive allows configuration
  +of the port numbers to which the proxy CONNECT method may connect.
  +That allows proxying to https://some.server:8443/ which resulted
  +in an error message prior to Apache version 1.3.2.
   LIThe proxy now supports the HTTP/1.1 Via: header as specified in
   RFC2068. The new
   A HREF=mod/mod_proxy.html#proxyviaCODEProxyVia/CODE
  
  
  
  1.62  +22 -0 apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c proxy_connect.c proxy_ftp.c proxy_http.c proxy_util.c

1998-08-16 Thread martin
martin  98/08/16 13:21:30

  Modified:src  CHANGES
   src/include ap_mmn.h
   src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c
proxy_connect.c proxy_ftp.c proxy_http.c
proxy_util.c
  Log:
  Modify the proxy to use tables instead of array_headers for header lines.
  That simplifies some code, but changes many of the proxy-internal interfaces.
  It should also prevent the proxy from merging multiple Set-Cookie: headers
  into one.
  
  Revision  ChangesPath
  1.1027+3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1026
  retrieving revision 1.1027
  diff -u -u -r1.1026 -r1.1027
  --- CHANGES   1998/08/15 15:02:44 1.1026
  +++ CHANGES   1998/08/16 20:21:24 1.1027
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.2
   
  +  *) Change the proxy to use tables instead of array_headers for
  + the header lines. [Martin Kraemer]
  +
 *) Make sure the config.status file is not overridden when just
``configure --help'' is used. [Ralf S. Engelschall] PR#2844
   
  
  
  
  1.4   +9 -2  apache-1.3/src/include/ap_mmn.h
  
  Index: ap_mmn.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/include/ap_mmn.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -u -r1.3 -r1.4
  --- ap_mmn.h  1998/08/14 02:49:09 1.3
  +++ ap_mmn.h  1998/08/16 20:21:25 1.4
  @@ -66,6 +66,7 @@
*
* MODULE_MAGIC_NUMBER_MINOR
* Minor API changes that do not cause binary compatibility problems.
  + * Should be reset to 0 when upgrading MODULE_MAGIC_NUMBER_MAJOR.
*
* See the MODULE_MAGIC_AT_LEAST macro below for an example.
*/
  @@ -164,12 +165,18 @@
* ap_get_limit_req_body() to get its value.
* 19980812 (1.3.2-dev)  - split off MODULE_MAGIC_NUMBER
* 19980812.2   - add ap_overlap_tables()
  + * 19980816 (1.3.2-dev)  - change proxy to use tables for headers, change
  + *struct cache_req to typedef cache_req.
  + *Delete ap_proxy_get_header(), 
ap_proxy_add_header(),
  + *ap_proxy_del_header(). Change interface of 
  + *ap_proxy_send_fb() and ap_proxy_cache_error(). 
  + *Add ap_proxy_send_hdr_line() and ap_proxy_bputs2().
*/
   
   #ifndef MODULE_MAGIC_NUMBER_MAJOR
  -#define MODULE_MAGIC_NUMBER_MAJOR 19980812
  +#define MODULE_MAGIC_NUMBER_MAJOR 19980816
   #endif
  -#define MODULE_MAGIC_NUMBER_MINOR 2
  +#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
   #define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR/* backward 
compat */
   
   /* Useful for testing for features. */
  
  
  
  1.59  +1 -1  apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -u -r1.58 -r1.59
  --- mod_proxy.c   1998/08/06 17:30:40 1.58
  +++ mod_proxy.c   1998/08/16 20:21:26 1.59
  @@ -292,7 +292,7 @@
   array_header *proxies = conf-proxies;
   struct proxy_remote *ents = (struct proxy_remote *) proxies-elts;
   int i, rc;
  -struct cache_req *cr;
  +cache_req *cr;
   int direct_connect = 0;
   const char *maxfwd_str;
   
  
  
  
  1.38  +26 -17apache-1.3/src/modules/proxy/mod_proxy.h
  
  Index: mod_proxy.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/mod_proxy.h,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -u -r1.37 -r1.38
  --- mod_proxy.h   1998/07/09 19:45:56 1.37
  +++ mod_proxy.h   1998/08/16 20:21:27 1.38
  @@ -55,6 +55,9 @@
*
*/
   
  +#ifndef MOD_PROXY_H
  +#define MOD_PROXY_H 
  +
   /*
* Main include file for the Apache proxy
*/
  @@ -218,7 +221,7 @@
   };
   
   /* caching information about a request */
  -struct cache_req {
  +typedef struct {
   request_rec *req;/* the request */
   char *url;   /* the URL requested */
   char *filename;  /* name of the cache file, or NULL if no cache 
*/
  @@ -237,35 +240,41 @@
   unsigned int written;/* total *content* bytes written to cache */
   float cache_completion;  /* specific to this request */
   char *resp_line; /* the whole status like (protocol, code + 
message) */
  -array_header *hdrs;  /* the HTTP headers of the file */
  +table *hdrs; /* the HTTP headers of the file */
  +} cache_req;
  +
  +/* Additional 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c mod_proxy.h proxy_http.c

1998-08-16 Thread martin
martin  98/08/16 13:51:57

  Modified:htdocs/manual/mod mod_proxy.html
   src  CHANGES
   src/include httpd.h
   src/modules/proxy mod_proxy.c mod_proxy.h proxy_http.c
  Log:
  Add proxy Via: header management. Currently, Via: headers can be left
  unchanged (compatibility), can be set to protocol and host only,
  or to protocol, host and comment. Optionally, all Via: headers can
  be suppressed if intranet privacy in companies is desired when going out
  over a firewall apache.
  
  Revision  ChangesPath
  1.44  +53 -0 apache-1.3/htdocs/manual/mod/mod_proxy.html
  
  Index: mod_proxy.html
  ===
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_proxy.html,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -u -r1.43 -r1.44
  --- mod_proxy.html1998/08/06 01:05:30 1.43
  +++ mod_proxy.html1998/08/16 20:51:52 1.44
  @@ -48,6 +48,7 @@
   LIA HREF=#proxyreceivebuffersizeProxyReceiveBufferSize/A
   LIA HREF=#noproxyNoProxy/A
   LIA HREF=#proxydomainProxyDomain/A
  +LIA HREF=#proxyviaProxyVia/A
   LIA HREF=#cacherootCacheRoot/A
   LIA HREF=#cachesizeCacheSize/A
   LIA HREF=#cachemaxexpireCacheMaxExpire/A
  @@ -549,6 +550,58 @@
 NoProxy .mycompany.com 192.168.112.0/21 
 ProxyDomain .mycompany.com
   /PRE
  +
  +HR
  +
  +H2A NAME=proxyviaProxyVia/A/H2
  +A
  + HREF=directive-dict.html#Syntax
  + REL=Help
  +STRONGSyntax:/STRONG/A ProxyVia { EMoff/EM
  +   | EMon/EM
  +| EMfull/EM
  +| EMblock/EM
  +}BR
  +A
  + HREF=directive-dict.html#Default
  + REL=Help
  +STRONGDefault:/STRONG/A EMProxyVia off/EMBR
  +A
  + HREF=directive-dict.html#Context
  + REL=Help
  +STRONGContext:/STRONG/A server config, virtual hostBR
  +A
  + HREF=directive-dict.html#Override
  + REL=Help
  +STRONGOverride:/STRONG/A EMNot applicable/EMBR
  +A
  + HREF=directive-dict.html#Status
  + REL=Help
  +STRONGStatus:/STRONG/A BaseBR
  +A
  + HREF=directive-dict.html#Module
  + REL=Help
  +STRONGModule:/STRONG/A mod_proxyBR
  +A
  + HREF=directive-dict.html#Compatibility
  + REL=Help
  +STRONGCompatibility:/STRONG/A ProxyVia is only available in
  +Apache 1.3.2 and later.P
  +
  +This directive controls the use of the SAMPVia:/SAMP HTTP header
  +by the proxy. Its intended use is to control the flow of of proxy
  +requests along a chain of proxy servers.
  +See RFC2068 (HTTP/1.1) for an explanation of SAMPVia:/SAMP header 
lines.UL
  +LIIf set to EMoff/EM, which is the default, no special
  +processing is performed. If a request or reply contains a SAMPVia:/SAMP 
header,
  +it is passed through unchanged.
  +LIIf set to EMon/EM, each request and reply will get a 
SAMPVia:/SAMP header
  +line added for the current host.
  +LIIf set to EMfull/EM, each generated SAMPVia:/SAMP header line 
will
  +additionally have the Apache server version shown as a SAMPVia:/SAMP 
comment field.
  +LIIf set to EMblock/EM, every proxy request will have all its
  +SAMPVia:/SAMP header lines removed. No new SAMPVia:/SAMP header will 
be generated.
  +/UL
   
   HR
   
  
  
  
  1.1028+3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1027
  retrieving revision 1.1028
  diff -u -u -r1.1027 -r1.1028
  --- CHANGES   1998/08/16 20:21:24 1.1027
  +++ CHANGES   1998/08/16 20:51:53 1.1028
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.2
   
  +  *) Make the proxy generate and understand Via: headers
  + [Martin Kraemer]
  +
 *) Change the proxy to use tables instead of array_headers for
the header lines. [Martin Kraemer]
   
  
  
  
  1.238 +2 -0  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.237
  retrieving revision 1.238
  diff -u -u -r1.237 -r1.238
  --- httpd.h   1998/08/13 02:59:33 1.237
  +++ httpd.h   1998/08/16 20:51:54 1.238
  @@ -122,6 +122,8 @@
   /* -- Internal representation for a HTTP protocol number, e.g., HTTP/1.1 -- 
*/
   
   #define HTTP_VERSION(major,minor) (1000*(major)+(minor))
  +#define HTTP_VERSION_MAJOR(number) ((number)/1000)
  +#define HTTP_VERSION_MINOR(number) ((number)%1000)
   
   
   /* -- Port number for server running standalone --- 
*/
  
  
  
  1.60  +27 -2 apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -u 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-07-21 Thread martin
martin  98/07/21 08:39:44

  Modified:.STATUS
   src  CHANGES
   src/modules/proxy mod_proxy.c
  Log:
  Added Max-Forwards: trace support to the proxy
  
  Revision  ChangesPath
  1.446 +3 -1  apache-1.3/STATUS
  
  Index: STATUS
  ===
  RCS file: /home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.445
  retrieving revision 1.446
  diff -u -u -r1.445 -r1.446
  --- STATUS1998/07/20 23:38:34 1.445
  +++ STATUS1998/07/21 15:39:39 1.446
  @@ -269,6 +269,8 @@
   
In progress:
   
  +* Martin's busy adding Via: support to the proby
  +
   * Ben's ASP work... All agree it sounds cool.
   
   * DDA's adding a tray application to the Windoze version for ease of
  @@ -433,7 +435,7 @@
   2) Expect
   3) byte range error handling
   4) update the Accept-Encoding parser to allow q-values
  -5) would be nice if the proxy used Via and Max-Forwards, even as
  +5) would be nice if the proxy used Via, even as
   HTTP/1.0
   
   * #ifdef __EMX__ -- #ifdef OS2.
  
  
  
  1.975 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.974
  retrieving revision 1.975
  diff -u -u -r1.974 -r1.975
  --- CHANGES   1998/07/21 10:20:24 1.974
  +++ CHANGES   1998/07/21 15:39:40 1.975
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.2
   
  +  *) Add support for the Max-Forwards: header line required by RFC2068 for
  + the TRACE method. This allows apache to TRACE along a chain of proxies
  + up to a predetermined depth. [Martin Kraemer]
  +
 *) Fix SHARED_CORE rule: The CFLAGS_SHLIB variable is no longer doubled
(compilers complained) and the .so.V.R.P filename extension was adjusted
to correctly reflect the 1.3.2 version.
  
  
  
  1.56  +17 -0 apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -u -r1.55 -r1.56
  --- mod_proxy.c   1998/07/09 19:45:55 1.55
  +++ mod_proxy.c   1998/07/21 15:39:42 1.56
  @@ -290,9 +290,26 @@
   int i, rc;
   struct cache_req *cr;
   int direct_connect = 0;
  +const char *maxfwd_str;
   
   if (!r-proxyreq || strncmp(r-filename, proxy:, 6) != 0)
return DECLINED;
  +
  +if (r-method_number == M_TRACE 
  + (maxfwd_str = ap_table_get(r-headers_in, Max-Forwards)) != NULL) {
  + int maxfwd = strtol(maxfwd_str, NULL, 10);
  + if (maxfwd  1) {
  + int access_status;
  + r-proxyreq = 0;
  + if ((access_status = ap_send_http_trace(r)))
  + ap_die(access_status, r);
  + else
  + ap_finalize_request_protocol(r);
  + return OK;
  + }
  + ap_table_setn(r-headers_in, Max-Forwards, 
  +   ap_psprintf(r-pool, %d, (maxfwd  0) ? maxfwd-1 : 0));
  +}
   
   if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))
return rc;
  
  
  


cvs commit: apache-1.3/src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c proxy_ftp.c proxy_http.c proxy_util.c

1998-07-09 Thread martin
martin  98/07/09 12:45:59

  Modified:htdocs/manual/mod directives.html mod_proxy.html
   src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c
proxy_ftp.c proxy_http.c proxy_util.c
  Log:
  cache in the event that the client cancels the transfer, provided that
  the configured percentage of the file has already been transfered.
  It works for http transfers only.
  
  The new httpd.conf directive is:
  CacheForceCompletion percentage
  
  PR: 2277
  Submitted by: Glen Parker [EMAIL PROTECTED]
  Reviewed by:  Martin Kraemer, Brian Behlendorf
  
  Revision  ChangesPath
  1.47  +1 -0  apache-1.3/htdocs/manual/mod/directives.html
  
  Index: directives.html
  ===
  RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/directives.html,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -u -r1.46 -r1.47
  --- directives.html   1998/06/16 03:37:15 1.46
  +++ directives.html   1998/07/09 19:45:40 1.47
  @@ -71,6 +71,7 @@
   LIA HREF=mod_proxy.html#cachedefaultexpireCacheDefaultExpire/A
   LIA HREF=mod_proxy.html#cachedirlengthCacheDirLength/A
   LIA HREF=mod_proxy.html#cachedirlevelsCacheDirLevels/A
  +LIA HREF=mod_proxy.html#cacheforcecompletionCacheForceCompletion/A
   LIA HREF=mod_proxy.html#cachegcintervalCacheGcInterval/A
   LIA 
HREF=mod_proxy.html#cachelastmodifiedfactorCacheLastModifiedFactor/A
   LIA HREF=mod_proxy.html#cachemaxexpireCacheMaxExpire/A
  
  
  
  1.41  +42 -0 apache-1.3/htdocs/manual/mod/mod_proxy.html
  
  Index: mod_proxy.html
  ===
  RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_proxy.html,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -u -r1.40 -r1.41
  --- mod_proxy.html1998/06/16 02:11:31 1.40
  +++ mod_proxy.html1998/07/09 19:45:40 1.41
  @@ -56,6 +56,7 @@
   LIA HREF=#cachegcintervalCacheGcInterval/A
   LIA HREF=#cachedirlevelsCacheDirLevels/A
   LIA HREF=#cachedirlengthCacheDirLength/A
  +LIA HREF=#cacheforcecompletionCacheForceCompletion/A
   LIA HREF=#nocacheNoCache/A
   /UL
   
  @@ -548,6 +549,47 @@
 NoProxy .mycompany.com 192.168.112.0/21 
 ProxyDomain .mycompany.com
   /PRE
  +
  +HR
  +
  +H2A NAME=cacheforcecompletionCacheForceCompletion/A/H2
  +A
  + HREF=directive-dict.html#Syntax
  + REL=Help
  +STRONGSyntax:/STRONG/A CacheForceCompletion EMpercentage/EMBR
  +A
  + HREF=directive-dict.html#Default
  + REL=Help
  +STRONGDefault:/STRONG/A EM90/EMBR
  +A
  + HREF=directive-dict.html#Context
  + REL=Help
  +STRONGContext:/STRONG/A server config, virtual hostBR
  +A
  + HREF=directive-dict.html#Override
  + REL=Help
  +STRONGOverride:/STRONG/A EMNot applicable/EMBR
  +A
  + HREF=directive-dict.html#Status
  + REL=Help
  +STRONGStatus:/STRONG/A BaseBR
  +A
  + HREF=directive-dict.html#Module
  + REL=Help
  +STRONGModule:/STRONG/A mod_proxyBR
  +A
  + HREF=directive-dict.html#Compatibility
  + REL=Help
  +STRONGCompatibility:/STRONG/A CacheForceCompletion is only available 
in
  +Apache 1.3 and later.P
  +
  +If an http transfer that is being cached is cancelled, the proxy module will
  +complete the transfer to cache if more than the percentage specified has
  +already been transferred.P
  +
  +This is a percentage, and must be a number between 1 and 100, or 0 to use
  +the default.  100 will cause a document to be cached only if the transfer
  +was allowed to complete.  A number between 60 and 90 is recommended.
   
   HR
   
  
  
  
  1.55  +19 -0 apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -u -r1.54 -r1.55
  --- mod_proxy.c   1998/06/13 15:22:58 1.54
  +++ mod_proxy.c   1998/07/09 19:45:55 1.55
  @@ -405,6 +405,7 @@
   /* at these levels, the cache can have 2^18 directories (256,000)  */
   ps-cache.dirlevels = 3;
   ps-cache.dirlength = 1;
  +ps-cache.cache_completion = DEFAULT_CACHE_COMPLETION;
   
   return ps;
   }
  @@ -742,6 +743,22 @@
   return NULL;
   }
   
  +static const char*
  +set_cache_completion(cmd_parms *parms, void *dummy, char *arg)
  +{
  +proxy_server_conf *psf =
  +ap_get_module_config(parms-server-module_config, proxy_module);
  +int s = atoi(arg);
  +if (s  100 || s  0) {
  + return CacheForceCompletion must be = 100 percent, 
  +   or 0 for system default.;
  +}
  +
  +if (s  0)
  +  psf-cache.cache_completion = ((float)s / 100);
  +return NULL;
  +}
  +
   static const handler_rec proxy_handlers[] =
   {
   {proxy-server, proxy_handler},
  @@ -784,6 +801,8 @@
The number of characters in subdirectory names},
   {NoCache, 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c proxy_connect.c proxy_ftp.c proxy_http.c proxy_util.c

1998-05-27 Thread martin
martin  98/05/27 15:56:07

  Modified:src  CHANGES
   src/include compat.h
   src/main http_protocol.c http_request.c
   src/modules/proxy mod_proxy.c mod_proxy.h proxy_cache.c
proxy_connect.c proxy_ftp.c proxy_http.c
proxy_util.c
  Log:
  Make ErrorDocuments work for proxy error messages.
  Define error-notes as a  communication channel modules-core
  
  PR: 494, 1259
  Reviewed by:  Dean Gaudet, Marc Slemco, Chuck Murcko
  
  Revision  ChangesPath
  1.866 +12 -0 apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.865
  retrieving revision 1.866
  diff -u -u -r1.865 -r1.866
  --- CHANGES   1998/05/27 15:29:28 1.865
  +++ CHANGES   1998/05/27 22:55:50 1.866
  @@ -1,5 +1,17 @@
   Changes with Apache 1.3b8
   
  +  *) Proxy Fix: The proxy special failure routine ap_proxyerror()
  + was updated to use the normal apache error processing, thereby allowing
  + proxy errors to be treated by ErrorDocument's as well. For this
  + purpose, a new module-to-core communication variable error-notes
  + was introduced; the proxy (and possibly other modules) communicates
  + its error text using this variable. Its content is copied to a new
  + cgi-env-var REDIRECT_ERROR_NOTES for use by ErrorDocuments.
  + The old proxy special error routine ap_proxy_log_uerror()
  + was replaced by regular ap_log_error() calls, many messages were made
  + more informative. 
  + [Martin Kraemer] PR#494, 1259
  +
 *) [SECURITY] A possible buffer overflow in the ftp proxy was fixed.
[Martin Kraemer]
   
  
  
  
  1.9   +0 -1  apache-1.3/src/include/compat.h
  
  Index: compat.h
  ===
  RCS file: /home/cvs/apache-1.3/src/include/compat.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -u -r1.8 -r1.9
  --- compat.h  1998/05/27 14:01:30 1.8
  +++ compat.h  1998/05/27 22:55:59 1.9
  @@ -284,7 +284,6 @@
   #define proxy_is_ipaddrap_proxy_is_ipaddr
   #define proxy_is_word  ap_proxy_is_word
   #define proxy_liststr  ap_proxy_liststr
  -#define proxy_log_uerror   ap_proxy_log_uerror
   #define proxy_read_headers ap_proxy_read_headers
   #define proxy_sec2hex  ap_proxy_sec2hex
   #define proxy_send_fb  ap_proxy_send_fb
  
  
  
  1.217 +165 -144  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.216
  retrieving revision 1.217
  diff -u -u -r1.216 -r1.217
  --- http_protocol.c   1998/05/27 14:01:33 1.216
  +++ http_protocol.c   1998/05/27 22:55:59 1.217
  @@ -1950,25 +1950,25 @@
   if (status == HTTP_NOT_MODIFIED) {
   if (!is_empty_table(r-err_headers_out))
   r-headers_out = ap_overlay_tables(r-pool, r-err_headers_out,
  -r-headers_out);
  +   r-headers_out);
   ap_hard_timeout(send 304, r);
   
   ap_basic_http_header(r);
   ap_set_keepalive(r);
   
  -ap_table_do((int (*)(void *, const char *, const char 
*))ap_send_header_field,
  - (void *) r, r-headers_out,
  - Connection,
  - Keep-Alive,
  - ETag,
  - Content-Location,
  - Expires,
  - Cache-Control,
  - Vary,
  - Warning,
  - WWW-Authenticate,
  - Proxy-Authenticate,
  - NULL);
  +ap_table_do((int (*)(void *, const char *, const char *)) 
ap_send_header_field,
  +(void *) r, r-headers_out,
  +Connection,
  +Keep-Alive,
  +ETag,
  +Content-Location,
  +Expires,
  +Cache-Control,
  +Vary,
  +Warning,
  +WWW-Authenticate,
  +Proxy-Authenticate,
  +NULL);
   
   terminate_header(r-connection-client);
   
  @@ -2044,144 +2044,165 @@
   }
   {
   char *title = status_lines[idx];
  +char *h1;
  +char *error_notes;
  +
  +/* Accept a status_line set by a module, but only if it begins
  + * with the 3 digit status code
  + */
  +if (r-status_line != NULL
  + strlen(r-status_line)  4   /* long enough */
  + isdigit(r-status_line[0])
  + 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-04-01 Thread martin
martin  98/04/01 06:41:45

  Modified:src/include  util_uri.h
   src/main  http_protocol.c util_uri.c
   src/modules/proxy  mod_proxy.c
  Log:
  After recent changes, the proxying of CONNECT host:port HTTP/1.0 requests
  (as are issued by current browsers for https://host/ URLs) ceased to work.
  Now the request method is parsed early and used to decide which of two
  URI parsing routines should be used (either the full scheme://user:[EMAIL 
PROTECTED]
  format, or the fixed host:port format for CONNECTs).
  
  Yet to fix: the request method is currently determined twice. Probably the
  later check is redundant (but I'm not sure because of the difficult logic
  with internal subrequests etc.)
  
  Revision  ChangesPath
  1.6   +1 -0  apache-1.3/src/include/util_uri.h
  
  Index: util_uri.h
  ===
  RCS file: /home/cvs/apache-1.3/src/include/util_uri.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -u -r1.5 -r1.6
  --- util_uri.h1998/03/31 12:52:33 1.5
  +++ util_uri.h1998/04/01 14:41:32 1.6
  @@ -112,6 +112,7 @@
   API_EXPORT(char *) unparse_uri_components(pool *p, const uri_components 
*uptr,
   unsigned flags);
   API_EXPORT(int) parse_uri_components(pool *p, const char *uri, 
uri_components *uptr);
  +API_EXPORT(int) parse_hostinfo_components(pool *p, const char *hostinfo, 
uri_components *uptr);
   /* called by the core in main() */
   extern void util_uri_init(void);
   
  
  
  
  1.206 +31 -2 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.205
  retrieving revision 1.206
  diff -u -u -r1.205 -r1.206
  --- http_protocol.c   1998/03/31 12:52:45 1.205
  +++ http_protocol.c   1998/04/01 14:41:34 1.206
  @@ -581,14 +581,20 @@
   
   r-unparsed_uri = pstrdup(r-pool, uri);
   
  -/* Simple syntax Errors in URLs are trapped by parse_uri_components(). */
  -status = parse_uri_components(r-pool, uri, r-parsed_uri);
  +if (r-method_number == M_CONNECT) {
  + status = parse_hostinfo_components(r-pool, uri, r-parsed_uri);
  +} else {
  + /* Simple syntax Errors in URLs are trapped by parse_uri_components(). 
*/
  + status = parse_uri_components(r-pool, uri, r-parsed_uri);
  +}
   
   if (is_HTTP_SUCCESS(status)) {
/* if it has a scheme we may need to do absoluteURI vhost stuff */
if (r-parsed_uri.scheme
 !strcasecmp(r-parsed_uri.scheme, http_method(r))) {
r-hostname = r-parsed_uri.hostname;
  + } else if (r-method_number == M_CONNECT) {
  + r-hostname = r-parsed_uri.hostname;
}
r-args = r-parsed_uri.query;
r-uri = r-parsed_uri.path ? r-parsed_uri.path
  @@ -664,6 +670,29 @@
   r-the_request = pstrdup(r-pool, l);
   r-method = getword_white(r-pool, ll);
   uri = getword_white(r-pool, ll);
  +
  +/* Provide quick information about the request method as soon as known */
  +if (!strcmp(r-method, HEAD)) {
  +r-header_only = 1;
  +r-method_number = M_GET;
  +}
  +else if (!strcmp(r-method, GET))
  +r-method_number = M_GET;
  +else if (!strcmp(r-method, POST))
  +r-method_number = M_POST;
  +else if (!strcmp(r-method, PUT))
  +r-method_number = M_PUT;
  +else if (!strcmp(r-method, DELETE))
  +r-method_number = M_DELETE;
  +else if (!strcmp(r-method, CONNECT))
  +r-method_number = M_CONNECT;
  +else if (!strcmp(r-method, OPTIONS))
  +r-method_number = M_OPTIONS;
  +else if (!strcmp(r-method, TRACE))
  +r-method_number = M_TRACE;
  +else
  +r-method_number = M_INVALID;   /* Will eventually croak. */
  +
   parse_uri(r, uri);
   
   r-assbackwards = (ll[0] == '\0');
  
  
  
  1.18  +37 -0 apache-1.3/src/main/util_uri.c
  
  Index: util_uri.c
  ===
  RCS file: /home/cvs/apache-1.3/src/main/util_uri.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -u -r1.17 -r1.18
  --- util_uri.c1998/03/31 12:52:51 1.17
  +++ util_uri.c1998/04/01 14:41:36 1.18
  @@ -543,4 +543,41 @@
   hostinfo = s + 1;
   goto deal_with_host;
   }
  +
  +/* Special case for CONNECT parsing: it comes with the hostinfo part only */
  +/* See the INTERNET-DRAFT document Tunneling SSL Through a WWW Proxy
  + * currently at http://www.mcom.com/newsref/std/tunneling_ssl.html
  + * for the format of the CONNECT host:port HTTP/1.0 request
  + */
  +API_EXPORT(int) parse_hostinfo_components(pool *p, const char *hostinfo, 
uri_components *uptr)
  +{
  +const char *s;
  +char *endstr;
  +
  +/* Initialize the structure. parse_uri() and 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-03-26 Thread martin
martin  98/03/26 02:10:55

  Modified:src/modules/proxy mod_proxy.c
  Log:
  Use HTTP_BAD_REQUEST for BAD_REQUEST everywhere
  
  Revision  ChangesPath
  1.48  +1 -7  apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -u -r1.47 -r1.48
  --- mod_proxy.c   1998/03/20 07:56:54 1.47
  +++ mod_proxy.c   1998/03/26 10:10:49 1.48
  @@ -211,7 +211,7 @@
   
   p = strchr(url, ':');
   if (p == NULL || p == url)
  - return BAD_REQUEST;
  + return HTTP_BAD_REQUEST;
   
   return OK;   /* otherwise; we've done the best we can */
   }
  @@ -311,14 +311,8 @@
int ii;
struct dirconn_entry *list = (struct dirconn_entry *) 
conf-dirconn-elts;
   
  -/*if (*++p == '/'  *++p == '/')   */
  -
for (direct_connect = ii = 0; ii  conf-dirconn-nelts  
!direct_connect; ii++) {
direct_connect = list[ii].matcher(list[ii], r);
  -#if DEBUGGING
  - aplog_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r-server,
  - URI and NoProxy: %s: %s, r-uri, list[ii].name);
  -#endif
}
   #if DEBUGGING
{
  
  
  


cvs commit: apache-1.3/src/modules/proxy mod_proxy.c proxy_ftp.c proxy_http.c

1998-03-20 Thread Ralf S. Engelschall
rse 98/03/19 23:56:57

  Modified:.STATUS
   htdocs/manual new_features_1_3.html
   htdocs/manual/mod mod_proxy.html
   src  CHANGES
   src/modules/proxy mod_proxy.c proxy_ftp.c proxy_http.c
  Log:
  Reanimation of an undocumented feature of mod_proxy:
  ProxyReceiveBufferSize
  
  Submitted by: Ralf S. Engelschall
  PR#: 1348
  
  Revision  ChangesPath
  1.199 +1 -0  apache-1.3/STATUS
  
  Index: STATUS
  ===
  RCS file: /export/home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.198
  retrieving revision 1.199
  diff -u -r1.198 -r1.199
  --- STATUS1998/03/20 07:29:48 1.198
  +++ STATUS1998/03/20 07:56:47 1.199
  @@ -99,6 +99,7 @@
   * Ralf's additional manual pages for the support programs
   * Ben Hyde's Configure check for unknown command switch
   * Martin's fix for src/helpers/fp2rp
  +* Ralf's reanimation of an undocumented directive: ProxyReceiveBufferSize
   
   Available Patches:
   
  
  
  
  1.50  +2 -2  apache-1.3/htdocs/manual/new_features_1_3.html
  
  Index: new_features_1_3.html
  ===
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/new_features_1_3.html,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- new_features_1_3.html 1998/03/10 01:35:52 1.49
  +++ new_features_1_3.html 1998/03/20 07:56:48 1.50
  @@ -281,8 +281,8 @@
   LIThe critical path for static requests has fewer system calls.  This
generally helps all requests.  (45 syscalls for a static request
in 1.2 versus 22 in 1.3 in a well tuned configuration).
  -LIA HREF=mod/mod_proxy.html#receivebuffersize
  -SAMPReceiveBufferSize/SAMP/A
  +LIA HREF=mod/mod_proxy.html#proxyreceivebuffersize
  +SAMPProxyReceiveBufferSize/SAMP/A
directive gives CODEmod_proxy/CODE's outgoing connections
larger network buffers, for increased throughput.
   LIThe low level I/O routines use CODEwritev/CODE (where available)
  
  
  
  1.37  +46 -0 apache-1.3/htdocs/manual/mod/mod_proxy.html
  
  Index: mod_proxy.html
  ===
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_proxy.html,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- mod_proxy.html1998/03/04 08:53:52 1.36
  +++ mod_proxy.html1998/03/20 07:56:49 1.37
  @@ -45,6 +45,7 @@
   LIA HREF=#proxypassProxyPass/A
   LIA HREF=#proxypassreverseProxyPassReverse/A
   LIA HREF=#proxyblockProxyBlock/A
  +LIA HREF=#proxyreceivebuffersizeProxyReceiveBufferSize/A
   LIA HREF=#noproxyNoProxy/A
   LIA HREF=#proxydomainProxyDomain/A
   LIA HREF=#cacherootCacheRoot/A
  @@ -318,6 +319,51 @@
   /PRE
   
   blocks connections to all sites.
  +
  +HR
  +
  +H2A NAME=proxyreceivebuffersizeProxyReceiveBufferSize/A/H2
  +A
  + HREF=directive-dict.html#Syntax
  + REL=Help
  +STRONGSyntax:/STRONG/A ProxyReceiveBufferSize 
EMlt;bytesgt;/EMBR
  +A
  + HREF=directive-dict.html#Default
  + REL=Help
  +STRONGDefault:/STRONG/A EMNone/EMBR
  +A
  + HREF=directive-dict.html#Context
  + REL=Help
  +STRONGContext:/STRONG/A server config, virtual hostBR
  +A
  + HREF=directive-dict.html#Override
  + REL=Help
  +STRONGOverride:/STRONG/A EMNot applicable/EMBR
  +A
  + HREF=directive-dict.html#Status
  + REL=Help
  +STRONGStatus:/STRONG/A BaseBR
  +A
  + HREF=directive-dict.html#Module
  + REL=Help
  +STRONGModule:/STRONG/A mod_proxyBR
  +A
  + HREF=directive-dict.html#Compatibility
  + REL=Help
  +STRONGCompatibility:/STRONG/A ProxyReceiveBufferSize is only 
available in
  +Apache 1.3 and later.P
  +
  +The ProxyReceiveBufferSize directive specifies an explicit network buffer 
size
  +for outgoing HTTP and FTP connections, for increased throughput.  It has to 
be
  +greater then 512 or set to 0 to indicate that the systems default buffer size
  +should be used. 
  +
  +P
  +Example:
  +
  +PRE
  +  ProxyReceiveBufferSize 2048
  +/PRE
   
   HR
   
  
  
  
  1.725 +6 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.724
  retrieving revision 1.725
  diff -u -r1.724 -r1.725
  --- CHANGES   1998/03/20 07:29:49 1.724
  +++ CHANGES   1998/03/20 07:56:51 1.725
  @@ -1,5 +1,11 @@
   Changes with Apache 1.3b6
   
  +  *) Reanimated the (still undocumented) proxy receive buffer size directive:
  + Renamed from ReceiveBufferSize to ProxyReceiveBufferSize because the old
  + name was really too generic, added documentation for this directive to
  + the mod_proxy.html and corrected the hyperlink to it in the
  + new_features_1.3.html document.  [Ralf S. Engelschall, 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-03-06 Thread dgaudet
dgaudet 98/03/05 23:51:00

  Modified:src  CHANGES
   src/include httpd.h
   src/modules/proxy mod_proxy.c
  Log:
  Fix a bug pointed out by Lars on new-httpd in message-id
  [EMAIL PROTECTED].  I'm not sure how this ever worked
  before.  Luck I guess.
  
  If a request matches the vhost of a proxy then it's quite possible that
  various other modules such as mod_alias will get their grubby hands on
  the uri and play games like Alias or ScriptAlias and then short-circuit
  the translate_names phase before mod_proxy gets to handle
  ProxyRequests on.  So instead mod_proxy handles ProxyRequests on
  in the post_read_request phase... which can't be short-circuited.
  
  Revision  ChangesPath
  1.689 +5 -1  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.688
  retrieving revision 1.689
  diff -u -r1.688 -r1.689
  --- CHANGES   1998/03/05 18:58:30 1.688
  +++ CHANGES   1998/03/06 07:50:55 1.689
  @@ -62,9 +62,13 @@
In order to achieve this change subtle changes were made to the API.  
In a
request_rec, r-hostlen has been removed.  r-unparsed_uri now exists so
that the unmodified uri can be retrieved easily.  r-proxyreq is not set
  - until the translate_names phase. 
  + by the core, modules must set it during the post_read_request or
  + translate_names phase.
   
Plus changes to the virtualhost test suite for absoluteURI testing.
  +
  + This fixes several bugs with the proxy proxying requests to vhosts
  + managed by the same httpd.
[Dean Gaudet]
   
 *) Cleanup of code in http_vhost.c, and remove vhost matching code from
  
  
  
  1.193 +2 -1  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.192
  retrieving revision 1.193
  diff -u -r1.192 -r1.193
  --- httpd.h   1998/03/05 13:27:14 1.192
  +++ httpd.h   1998/03/06 07:50:58 1.193
  @@ -564,7 +564,8 @@
   
   char *the_request;   /* First line of request, so we can log 
it */
   int assbackwards;/* HTTP/0.9, simple request */
  -int proxyreq;/* A proxy request (calculated during 
translate_name) */
  +int proxyreq;/* A proxy request (calculated during
  +  * post_read_request or translate_name) */
   int header_only; /* HEAD request, as opposed to GET */
   char *protocol;  /* Protocol, as given to us, or HTTP/0.9 */
   int proto_num;   /* Number version of protocol; 1.1 = 1001 */
  
  
  
  1.45  +37 -11apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- mod_proxy.c   1998/03/04 10:50:30 1.44
  +++ mod_proxy.c   1998/03/06 07:50:59 1.45
  @@ -121,13 +121,23 @@
   return urip - uri;
   }
   
  -static int proxy_trans(request_rec *r)
  +/* Detect if an absoluteURI should be proxied or not.  Note that we
  + * have to do this during this phase because later phases are
  + * short-circuiting... i.e. translate_names will end when the first
  + * module returns OK.  So for example, if the request is something like:
  + *
  + * GET http://othervhost/cgi-bin/printenv HTTP/1.0
  + *
  + * mod_alias will notice the /cgi-bin part and ScriptAlias it and
  + * short-circuit the proxy... just because of the ordering in the
  + * configuration file.
  + */
  +static int proxy_detect(request_rec *r)
   {
   void *sconf = r-server-module_config;
  -proxy_server_conf *conf =
  -(proxy_server_conf *) get_module_config(sconf, proxy_module);
  -int i, len;
  -struct proxy_alias *ent = (struct proxy_alias *) conf-aliases-elts;
  +proxy_server_conf *conf;
  +
  +conf = (proxy_server_conf *) get_module_config(sconf, proxy_module);
   
   if (conf-req  r-parsed_uri.scheme) {
/* but it might be something vhosted */
  @@ -135,13 +145,29 @@
 !strcasecmp(r-parsed_uri.scheme, http_method(r))
 matches_request_vhost(r, r-parsed_uri.hostname,
  r-parsed_uri.port_str ? r-parsed_uri.port : 
default_port(r {
  -   r-proxyreq = 1;
  -   r-uri = r-unparsed_uri;
  -   r-filename = pstrcat(r-pool, proxy:, r-uri, NULL);
  -   r-handler = proxy-server;
  -   return OK;
  + r-proxyreq = 1;
  + r-uri = r-unparsed_uri;
  + r-filename = pstrcat(r-pool, proxy:, r-uri, NULL);
  + r-handler = proxy-server;
   }
   }

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-03-04 Thread dgaudet
dgaudet 98/03/04 00:54:33

  Modified:src/modules/proxy mod_proxy.c
  Log:
  Dean messed up ProxyPass, Mark fixed it.
  
  Submitted by: Mark J Cox [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.43  +25 -30apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- mod_proxy.c   1998/03/02 06:51:15 1.42
  +++ mod_proxy.c   1998/03/04 08:54:32 1.43
  @@ -126,45 +126,40 @@
   void *sconf = r-server-module_config;
   proxy_server_conf *conf =
   (proxy_server_conf *) get_module_config(sconf, proxy_module);
  +int i, len;
  +struct proxy_alias *ent = (struct proxy_alias *) conf-aliases-elts;
   
  -if (conf-req) {
  - if (!r-parsed_uri.scheme) {
  - return DECLINED; /* definately not a proxy request */
  - }
  +if (conf-req  r-parsed_uri.scheme) {
/* but it might be something vhosted */
  - if (r-parsed_uri.hostname
  +   if (!(r-parsed_uri.hostname
 !strcasecmp(r-parsed_uri.scheme, http_method(r))
 matches_request_vhost(r, r-parsed_uri.hostname,
  - r-parsed_uri.port_str ? r-parsed_uri.port : default_port(r))) 
{
  - return DECLINED; /* it's a vhost request */
  - }
  - r-proxyreq = 1;
  - r-uri = r-unparsed_uri;
  - r-filename = pstrcat(r-pool, proxy:, r-uri, NULL);
  - r-handler = proxy-server;
  - return OK;
  +   r-parsed_uri.port_str ? r-parsed_uri.port : 
default_port(r {
  +   r-proxyreq = 1;
  +   r-uri = r-unparsed_uri;
  +   r-filename = pstrcat(r-pool, proxy:, r-uri, NULL);
  +   r-handler = proxy-server;
  +   return OK;
  +}
   }
  -else {
  - /* XXX: since r-uri has been manipulated already we're not really
  -  * compliant with RFC1945 at this point.  But this probably isn't
  -  * an issue because this is a hybrid proxy/origin server.
  -  */
  - int i, len;
  - struct proxy_alias *ent = (struct proxy_alias *) conf-aliases-elts;
   
  - for (i = 0; i  conf-aliases-nelts; i++) {
  - len = alias_match(r-uri, ent[i].fake);
  +/* XXX: since r-uri has been manipulated already we're not really
  + * compliant with RFC1945 at this point.  But this probably isn't
  + * an issue because this is a hybrid proxy/origin server.
  + */
  +
  +for (i = 0; i  conf-aliases-nelts; i++) {
  +len = alias_match(r-uri, ent[i].fake);

  - if (len  0) {
  - r-filename = pstrcat(r-pool, proxy:, ent[i].real,
  -   r-uri + len, NULL);
  - r-handler = proxy-server;
  - r-proxyreq = 1;
  - return OK;
  - }
  +   if (len  0) {
  +   r-filename = pstrcat(r-pool, proxy:, ent[i].real,
  + r-uri + len, NULL);
  +   r-handler = proxy-server;
  +   r-proxyreq = 1;
  +   return OK;
}
  - return DECLINED;
   }
  +return DECLINED;
   }
   
   /* -- */
  
  
  


cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-03-04 Thread dgaudet
dgaudet 98/03/04 02:50:33

  Modified:src/modules/proxy mod_proxy.c
  Log:
  Revert a parsed uri change which I think was Martin's -- in proxy_fixup
  the comparisons are done against the url as stored in r-filename... it's
  kind of lame, but this is just how the proxy works.  So for example,
  if you're using ProxyPass the url stored in r-filename won't match what
  was passed to parse_uri() ... so r-parsed_uri isn't useful.
  
  I reverted to what was before, plus a few performance tweaks I couldn't
  resist.
  
  Revision  ChangesPath
  1.44  +10 -10apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- mod_proxy.c   1998/03/04 08:54:32 1.43
  +++ mod_proxy.c   1998/03/04 10:50:30 1.44
  @@ -170,24 +170,24 @@
*/
   static int proxy_fixup(request_rec *r)
   {
  -char *url;
  +char *url, *p;
   
   if (!r-proxyreq || strncmp(r-filename, proxy:, 6) != 0)
return DECLINED;
   
   url = r-filename[6];
   
  -if (!r-parsed_uri.scheme) {
  - return DECLINED;
  -}
  -
   /* canonicalise each specific scheme */
  -if (strcasecmp(r-parsed_uri.scheme, http) == 0)
  - return proxy_http_canon(r, url + 5, http, 
default_port_for_scheme(r-parsed_uri.scheme));
  -else if (strcasecmp(r-parsed_uri.scheme, ftp) == 0)
  +if (strncasecmp(url, http:, 5) == 0)
  + return proxy_http_canon(r, url + 5, http, DEFAULT_HTTP_PORT);
  +else if (strncasecmp(url, ftp:, 4) == 0)
return proxy_ftp_canon(r, url + 4);
  -else
  - return OK;  /* otherwise; we've done the best we can */
  +
  +p = strchr(url, ':');
  +if (p == NULL || p == url)
  + return BAD_REQUEST;
  +
  +return OK;   /* otherwise; we've done the best we can */
   }
   
   static void proxy_init(server_rec *r, pool *p)
  
  
  


cvs commit: apache-1.3/src/modules/proxy mod_proxy.c mod_proxy.h proxy_util.c

1998-02-27 Thread martin
martin  98/02/27 02:18:42

  Modified:src/modules/proxy mod_proxy.c mod_proxy.h proxy_util.c
  Log:
  Add pool to interfaces of proxy_is_XXX functions (needed for future expansion)
  
  Revision  ChangesPath
  1.39  +4 -3  apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -u -r1.38 -r1.39
  --- mod_proxy.c   1998/02/23 08:04:10 1.38
  +++ mod_proxy.c   1998/02/27 10:18:38 1.39
  @@ -530,20 +530,20 @@
fprintf(stderr, Parsed mask %s\n, inet_ntoa(New-mask));
   #endif
}
  - else if (proxy_is_domainname(New)) {
  + else if (proxy_is_domainname(New, parms-pool)) {
str_tolower(New-name);
   #if DEBUGGING
fprintf(stderr, Parsed domain %s\n, New-name);
   #endif
}
  - else if (proxy_is_hostname(New)) {
  + else if (proxy_is_hostname(New, parms-pool)) {
str_tolower(New-name);
   #if DEBUGGING
fprintf(stderr, Parsed host %s\n, New-name);
   #endif
}
else {
  - proxy_is_word(New);
  + proxy_is_word(New, parms-pool);
   #if DEBUGGING
fprintf(stderr, Parsed word %s\n, New-name);
   #endif
  @@ -708,6 +708,7 @@
new-name = arg;
/* Don't do name lookups on things that aren't dotted */
if (strchr(arg, '.') != NULL  proxy_host2addr(new-name, hp) == NULL)
  + /*@@@FIXME: This copies only the first of (possibly many) IP addrs 
*/
memcpy(new-addr, hp.h_addr, sizeof(struct in_addr));
else
new-addr.s_addr = 0;
  
  
  
  1.29  +4 -4  apache-1.3/src/modules/proxy/mod_proxy.h
  
  Index: mod_proxy.h
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.h,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -u -r1.28 -r1.29
  --- mod_proxy.h   1998/02/23 08:04:10 1.28
  +++ mod_proxy.h   1998/02/27 10:18:39 1.29
  @@ -286,9 +286,9 @@
   BUFF *proxy_cache_error(struct cache_req *r);
   int proxyerror(request_rec *r, const char *message);
   const char *proxy_host2addr(const char *host, struct hostent *reqhp);
  -int proxy_is_ipaddr(struct dirconn_entry *This);
  -int proxy_is_domainname(struct dirconn_entry *This);
  -int proxy_is_hostname(struct dirconn_entry *This);
  -int proxy_is_word(struct dirconn_entry *This);
  +int proxy_is_ipaddr(struct dirconn_entry *This, pool *p);
  +int proxy_is_domainname(struct dirconn_entry *This, pool *p);
  +int proxy_is_hostname(struct dirconn_entry *This, pool *p);
  +int proxy_is_word(struct dirconn_entry *This, pool *p);
   int proxy_doconnect(int sock, struct sockaddr_in *addr, request_rec *r);
   int proxy_garbage_init(server_rec *, pool *);
  
  
  
  1.44  +8 -4  apache-1.3/src/modules/proxy/proxy_util.c
  
  Index: proxy_util.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_util.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -u -r1.43 -r1.44
  --- proxy_util.c  1998/02/27 10:10:20 1.43
  +++ proxy_util.c  1998/02/27 10:18:40 1.44
  @@ -867,7 +867,7 @@
   }
   
   /* Return TRUE if addr represents an IP address (or an IP network address) */
  -int proxy_is_ipaddr(struct dirconn_entry *This)
  +int proxy_is_ipaddr(struct dirconn_entry *This, pool *p)
   {
   const char *addr = This-name;
   long ip_addr[4];
  @@ -1054,7 +1054,7 @@
   }
   
   /* Return TRUE if addr represents a domain name */
  -int proxy_is_domainname(struct dirconn_entry *This)
  +int proxy_is_domainname(struct dirconn_entry *This, pool *p)
   {
   char *addr = This-name;
   int i;
  @@ -1066,10 +1066,12 @@
   /* rfc1035 says DNS names must consist of [-a-zA-Z0-9] and '.' */
   for (i = 0; isalnum(addr[i]) || addr[i] == '-' || addr[i] == '.'; ++i);
   
  +#if 0
   if (addr[i] == ':') {
fprintf(stderr,  handle optional port in proxy_is_domainname()\n);
/*  handle optional port */
   }
  +#endif
   
   if (addr[i] != '\0')
return 0;
  @@ -1104,7 +1106,7 @@
   }
   
   /* Return TRUE if addr represents a host name */
  -int proxy_is_hostname(struct dirconn_entry *This)
  +int proxy_is_hostname(struct dirconn_entry *This, pool *p)
   {
   char *addr = This-name;
   int i;
  @@ -1116,10 +1118,12 @@
   /* rfc1035 says DNS names must consist of [-a-zA-Z0-9] and '.' */
   for (i = 0; isalnum(addr[i]) || addr[i] == '-' || addr[i] == '.'; ++i);
   
  +#if 0
   if (addr[i] == ':') {
fprintf(stderr,  handle optional port in proxy_is_hostname()\n);
/*  handle optional port */
   }
  +#endif
   
   if (addr[i] != '\0' || 

cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-02-27 Thread martin
martin  98/02/27 06:47:16

  Modified:src/modules/proxy mod_proxy.c
  Log:
  Sorry -- Forgot one pool argument in previous patch
  
  Revision  ChangesPath
  1.40  +1 -1  apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -u -r1.39 -r1.40
  --- mod_proxy.c   1998/02/27 10:18:38 1.39
  +++ mod_proxy.c   1998/02/27 14:47:15 1.40
  @@ -524,7 +524,7 @@
New = push_array(conf-dirconn);
New-name = arg;
   
  - if (proxy_is_ipaddr(New)) {
  + if (proxy_is_ipaddr(New, parms-pool)) {
   #if DEBUGGING
fprintf(stderr, Parsed addr %s\n, inet_ntoa(New-addr));
fprintf(stderr, Parsed mask %s\n, inet_ntoa(New-mask));
  
  
  


cvs commit: apache-1.3/src/modules/proxy mod_proxy.c

1998-02-22 Thread martin
martin  98/02/22 13:22:13

  Modified:src/modules/proxy mod_proxy.c
  Log:
  Ignore case on host name comparisons for NoCache and NoProxy directives
  
  Revision  ChangesPath
  1.37  +2 -2  apache-1.3/src/modules/proxy/mod_proxy.c
  
  Index: mod_proxy.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -u -r1.36 -r1.37
  --- mod_proxy.c   1998/02/22 21:03:43 1.36
  +++ mod_proxy.c   1998/02/22 21:22:12 1.37
  @@ -468,7 +468,7 @@
   
   /* Don't duplicate entries */
   for (i = 0; i  conf-noproxies-nelts; i++) {
  - if (strcmp(arg, list[i].name) == 0)
  + if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */
found = 1;
   }
   
  @@ -683,7 +683,7 @@
   
   /* Don't duplicate entries */
   for (i = 0; i  conf-nocaches-nelts; i++) {
  - if (strcmp(arg, list[i].name) == 0)
  + if (strcasecmp(arg, list[i].name) == 0) /* ignore case for host names */
found = 1;
   }