cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-02 Thread randy
randy   98/02/02 14:33:41

  Modified:src/include httpd.h
   src/main http_config.c http_core.c http_protocol.c util.c
   src/modules/proxy mod_proxy.c proxy_http.c
   src/modules/standard mod_rewrite.c
  Log:
  Generalize default_port manipulations.
  The proxy may still need some work, but will defer until I can
  review these changes with others.
  Obtained from: Ben Laurie, Randy Terbush
  Reviewed by: Ben Laurie, Randy Terbush
  
  Revision  ChangesPath
  1.180 +6 -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.179
  retrieving revision 1.180
  diff -u -r1.179 -r1.180
  --- httpd.h   1998/02/01 22:05:34 1.179
  +++ httpd.h   1998/02/02 22:33:29 1.180
  @@ -116,7 +116,11 @@
   
   /* -- Port number for server running standalone --- 
*/
   
  -#define DEFAULT_PORT 80
  +#define DEFAULT_HTTP_PORT80
  +#define DEFAULT_HTTPS_PORT   443
  +#define is_default_port(port,r)  ((port) == default_port(r))
  +#define http_method(r)   "http"
  +#define  default_port(r) DEFAULT_HTTP_PORT
   
   /* - Default user name and group name running standalone -- 
*/
   /* --- These may be specified as numbers by placing a # before a number --- 
*/
  @@ -802,7 +806,7 @@
   #define escape_uri(ppool,path) os_escape_path(ppool,path,1)
   API_EXPORT(char *) escape_html(pool *p, const char *s);
   API_EXPORT(char *) construct_server(pool *p, const char *hostname,
  - unsigned port);
  + unsigned port, const request_rec *r);
   API_EXPORT(char *) escape_shell_cmd(pool *p, const char *s);
   
   API_EXPORT(int) count_dirs(const char *path);
  
  
  
  1.95  +1 -1  apache-1.3/src/main/http_config.c
  
  Index: http_config.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/main/http_config.c,v
  retrieving revision 1.94
  retrieving revision 1.95
  diff -u -r1.94 -r1.95
  --- http_config.c 1998/01/21 22:11:01 1.94
  +++ http_config.c 1998/02/02 22:33:31 1.95
  @@ -1225,7 +1225,7 @@
   {
   server_rec *s = (server_rec *) pcalloc(p, sizeof(server_rec));
   
  -s->port = DEFAULT_PORT;
  +s->port = 0;
   s->server_admin = DEFAULT_ADMIN;
   s->server_hostname = NULL;
   s->error_fname = DEFAULT_ERRORLOG;
  
  
  
  1.156 +3 -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.155
  retrieving revision 1.156
  diff -u -r1.155 -r1.156
  --- http_core.c   1998/02/02 19:46:53 1.155
  +++ http_core.c   1998/02/02 22:33:32 1.156
  @@ -622,11 +622,11 @@
: r->server->port;
host = r->hostname ? r->hostname : r->server->server_hostname;
   }
  -if (port == DEFAULT_PORT) {
  - return pstrcat(p, "http://";, host, uri, NULL);
  +if (is_default_port(port, r)) {
  + return pstrcat(p, http_method(r), "://", host, uri, NULL);
   }
   ap_snprintf(portnum, sizeof(portnum), "%u", port);
  -return pstrcat(p, "http://";, host, ":", portnum, uri, NULL);
  +return pstrcat(p, http_method(r), "://", host, ":", portnum, uri, NULL);
   }
   
   /*
  
  
  
  1.184 +9 -6  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.183
  retrieving revision 1.184
  diff -u -r1.183 -r1.184
  --- http_protocol.c   1998/01/31 00:15:43 1.183
  +++ http_protocol.c   1998/02/02 22:33:33 1.184
  @@ -625,14 +625,17 @@
   
   const char *check_fulluri(request_rec *r, const char *uri)
   {
  -char *name, *host;
  -int i;
  +char *name, *host, *proto;
  +int i, plen;
   unsigned port;
   
   /* This routine parses full URLs, if they match the server */
  -if (strncasecmp(uri, "http://";, 7))
  +proto = http_method(r);
  +plen = strlen(proto);
  +
  +if (strncasecmp(uri, proto, plen) || strncasecmp(uri + plen, "://", 3))
   return uri;
  -name = pstrdup(r->pool, uri + 7);
  +name = pstrdup(r->pool, uri + plen);
   
   /* Find the hostname, assuming a valid request */
   i = ind(name, '/');
  @@ -643,7 +646,7 @@
   if (*name)
   port = atoi(name);
   else
  -port = 80;
  +port = default_port(r);
   
   /* Make sure ports patch */
   if (port != r->server->port)
  @@ -651,7 +654,7 @@
   
   /* Save it for later use */
   r

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-23 Thread Ralf S. Engelschall
rse 98/02/23 07:18:52

  Modified:src/modules/standard mod_rewrite.c
  Log:
  mod_rewrite shouldn't make any assumptions on which characters a username can
  contain because a lot of Unix derivates allow more then [a-zA-Z0-9]. We now
  treat anything between ^/~ and  the next slash or end of URL as the username
  because this does not hurt us. We always expand only after we have
  successfully resolved the cut out name via /etc/passwd.
  
  Revision  ChangesPath
  1.68  +4 -10 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- mod_rewrite.c 1998/02/23 08:27:38 1.67
  +++ mod_rewrite.c 1998/02/23 15:18:50 1.68
  @@ -2244,7 +2244,7 @@
   
   /*
   **
  -**  Expand tilde-paths (~user) through
  +**  Expand tilde-paths (/~user) through
   **  Unix /etc/passwd database information
   **
   */
  @@ -2259,15 +2259,9 @@
   newuri = uri;
   if (uri != NULL && strlen(uri) > 2 && uri[0] == '/' && uri[1] == '~') {
   /* cut out the username */
  -for (j = 0, i = 2; j < sizeof(user)-1 && uri[i] != '\0' && 
  -#ifndef CHARSET_EBCDIC
  -   (   (uri[i] >= '0' && uri[i] <= '9')
  -|| (uri[i] >= 'a' && uri[i] <= 'z')
  -|| (uri[i] >= 'A' && uri[i] <= 'Z'))
  -#else
  -   isalnum(uri[i])
  -#endif
  -; )
  +for (j = 0, i = 2; j < sizeof(user)-1
  +   && uri[i] != '\0'
  +   && uri[i] != '/'  ; )
   user[j++] = uri[i++];
   user[j] = '\0';
   
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-24 Thread Ralf S. Engelschall
rse 98/02/24 07:44:33

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Add missing "static" and include  for
  RAND_MAX. Thanks to Ben Hyde <[EMAIL PROTECTED]>.
  
  Revision  ChangesPath
  1.70  +3 -2  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- mod_rewrite.c 1998/02/24 13:39:10 1.69
  +++ mod_rewrite.c 1998/02/24 15:44:31 1.70
  @@ -90,6 +90,7 @@
   /* from the underlaying Unix system ... */
   #include 
   #include 
  +#include 
   #include 
   #include 
   #include 
  @@ -2708,7 +2709,7 @@
   
   static int rewrite_rand_init_done = 0;
   
  -void rewrite_rand_init(void)
  +static void rewrite_rand_init(void)
   {
   if (!rewrite_rand_init_done) {
   srand((unsigned)(getpid()));
  @@ -2717,7 +2718,7 @@
   return;
   }
   
  -int rewrite_rand(int l, int h)
  +static int rewrite_rand(int l, int h)
   {
   int i;
   char buf[50];
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-26 Thread Ralf S. Engelschall
rse 98/02/26 01:32:29

  Modified:src/modules/standard mod_rewrite.c
  Log:
  just tab->space cosmetics
  
  Revision  ChangesPath
  1.72  +10 -10apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- mod_rewrite.c 1998/02/24 16:40:51 1.71
  +++ mod_rewrite.c 1998/02/26 09:32:27 1.72
  @@ -363,7 +363,7 @@
   */
   
   static const char *cmd_rewriteengine(cmd_parms *cmd, 
  -  rewrite_perdir_conf *dconf, int 
flag)
  + rewrite_perdir_conf *dconf, int flag)
   {
   rewrite_server_conf *sconf;
   
  @@ -404,7 +404,7 @@
   *options |= OPTION_INHERIT;
   else
   return pstrcat(p, "RewriteOptions: unknown option '", 
  -name, "'\n", NULL);
  +   name, "'\n", NULL);
   return NULL;
   }
   
  @@ -722,12 +722,12 @@
   if (cmd->path == NULL) {  /* is server command */
   new->rewriteconds   = sconf->rewriteconds;
   sconf->rewriteconds = make_array(cmd->pool, 2,
  -  
sizeof(rewritecond_entry));
  + sizeof(rewritecond_entry));
   }
   else {/* is per-directory command */
   new->rewriteconds   = dconf->rewriteconds;
   dconf->rewriteconds = make_array(cmd->pool, 2,
  -  
sizeof(rewritecond_entry));
  + sizeof(rewritecond_entry));
   }
   
   return NULL;
  @@ -1223,7 +1223,7 @@
   aplog_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r->server,
   "Options FollowSymLinks or SymLinksIfOwnerMatch is off "
   "which implies that RewriteRule directive is forbidden: "
  - "%s", r->filename);
  +"%s", r->filename);
   return FORBIDDEN;
   }
   else {
  @@ -1264,7 +1264,7 @@
   r->handler  = "proxy-server";
   
   rewritelog(r, 1, "[per-dir %s] go-ahead with proxy request "
  -"%s [OK]", dconf->directory, 
r->filename);
  +   "%s [OK]", dconf->directory, r->filename);
   return OK;
   }
   else if (  (strlen(r->filename) > 7 &&
  @@ -1528,7 +1528,7 @@
   if (p->flags & RULEFLAG_FORBIDDEN) {
   rewritelog(r, 2, "forcing '%s' to be forbidden", 
r->filename);
   r->filename = pstrcat(r->pool, "forbidden:", 
  -   r->filename, 
NULL);
  +  r->filename, NULL);
   changed = 1;
   break;
   }
  @@ -1993,7 +1993,7 @@
   
   /* log it */
   rewritelog(r, 5, "RewriteCond URI (-U) check: "
  -"path=%s -> status=%d", input, 
rsub->status);
  +   "path=%s -> status=%d", input, rsub->status);
   
   /* cleanup by destroying the subrequest */
   destroy_sub_req(rsub);
  @@ -2043,7 +2043,7 @@
   else {
   /* it is really a regexp pattern, so apply it */
   rc = (regexec(p->regexp, input, 
  -   p->regexp->re_nsub+1, regmatch,0) == 0);
  +  p->regexp->re_nsub+1, regmatch,0) == 0);
   
   /* if it isn't a negated pattern and really matched
  we update the passed-through regex subst info structure */
  @@ -3054,7 +3054,7 @@
   if (rc == 0 || fpin == NULL || fpout == NULL) {
   perror("spawn_child");
   fprintf(stderr, "mod_rewrite: "
  - "could not fork child for RewriteMap 
process\n");
  +"could not fork child for RewriteMap process\n");
   exit(1);
   }
   map->fpin  = fileno(fpin);
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-26 Thread Ralf S. Engelschall
rse 98/02/26 02:18:36

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  One more fix for RewriteMap programs. 0 when treated as NULL is ok as an error
  condition for filehandles (FILE *) but not for filenumbers. Here we have to
  use -1 as the error indicator like open() does.
  
  Revision  ChangesPath
  1.668 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.667
  retrieving revision 1.668
  diff -u -r1.667 -r1.668
  --- CHANGES   1998/02/25 09:36:09 1.667
  +++ CHANGES   1998/02/26 10:18:31 1.668
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b6
   
  +  *) Fix `RewriteMap' program lookup in situations where such maps are
  + defined but disabled (`RewriteEngine off') in per-server context. 
  + [Ralf S. Engelschall, PR#1431]
  +
 *) Fix bug introduced in 1.3b4-dev, config with no Port setting would cause
server to bind to port 0 rather than 80.  [Dean Gaudet]
   
  
  
  
  1.73  +19 -12apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- mod_rewrite.c 1998/02/26 09:32:27 1.72
  +++ mod_rewrite.c 1998/02/26 10:18:34 1.73
  @@ -488,8 +488,8 @@
   new->datafile  = a2;
   new->checkfile = a2;
   }
  -new->fpin  = 0;
  -new->fpout = 0;
  +new->fpin  = -1;
  +new->fpout = -1;
   
   if (new->checkfile && (sconf->state == ENGINE_ENABLED)
  && (stat(new->checkfile, &st) == -1))
  @@ -2661,6 +2661,14 @@
   char c;
   int i;
   
  +/* when `RewriteEngine off' was used in the per-server
  + * context then the rewritemap-programs were not spawned.
  + * In this case using such a map (usually in per-dir context)
  + * is useless because it is not available.
  + */
  +if (fpin == -1 || fpout == -1)
  +return NULL;
  +
   /* take the lock */
   rewritelock_alloc(r);
   
  @@ -3027,13 +3035,12 @@
   int rc;
   
   conf = get_module_config(s->module_config, &rewrite_module);
  -/*
  - * If the engine isn't turned on, don't even try to do anything.
  +
  +/*  If the engine isn't turned on, 
  + *  don't even try to do anything.
*/
  -if (conf->state == ENGINE_DISABLED) {
  +if (conf->state == ENGINE_DISABLED)
   return;
  -}
  -
   
   rewritemaps = conf->rewritemaps;
   entries = (rewritemap_entry *)rewritemaps->elts;
  @@ -3041,13 +3048,13 @@
   map = &entries[i];
   if (map->type != MAPTYPE_PRG)
   continue;
  -if (map->datafile == NULL||
  -*(map->datafile) == '\0' ||
  -map->fpin > 0||
  -map->fpout > 0 )
  +if (map->datafile == NULL 
  +|| *(map->datafile) == '\0'
  +|| map->fpin  != -1
  +|| map->fpout != -1)
   continue;
   fname = server_root_relative(p, map->datafile);
  -fpin = NULL;
  +fpin  = NULL;
   fpout = NULL;
   rc = spawn_child(p, rewritemap_program_child, (void *)map->datafile,
kill_after_timeout, &fpin, &fpout);
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-26 Thread Ralf S. Engelschall
rse 98/02/26 03:04:05

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  The RewriteLoglevel was different and incorrect against the docs and
  the per-server config merging was also inconsistent and bogus.
  
  Revision  ChangesPath
  1.669 +6 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.668
  retrieving revision 1.669
  diff -u -r1.668 -r1.669
  --- CHANGES   1998/02/26 10:18:31 1.668
  +++ CHANGES   1998/02/26 11:04:01 1.669
  @@ -1,5 +1,11 @@
   Changes with Apache 1.3b6
   
  +  *) Fix initialization of RewriteLogLevel (default now is 0 as documented 
  + and not 1) and the per-virtual-server merging of directives. Now all
  + directives except `RewriteEngine' and `RewriteOption' are either
  + completely overridden (default) or completely inherited (when
  + `RewriteOptions inherit') is used. [Ralf S. Engelschall, PR#1325]
  +
 *) Fix `RewriteMap' program lookup in situations where such maps are
defined but disabled (`RewriteEngine off') in per-server context. 
[Ralf S. Engelschall, PR#1431]
  
  
  
  1.74  +35 -21apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.73
  retrieving revision 1.74
  diff -u -r1.73 -r1.74
  --- mod_rewrite.c 1998/02/26 10:18:34 1.73
  +++ mod_rewrite.c 1998/02/26 11:04:03 1.74
  @@ -249,7 +249,7 @@
   a->options = OPTION_NONE;
   a->rewritelogfile  = NULL;
   a->rewritelogfp= -1;
  -a->rewriteloglevel = 1;
  +a->rewriteloglevel = 0;
   a->rewritelockfile = NULL;
   a->rewritelockfp   = -1;
   a->rewritemaps = make_array(p, 2, sizeof(rewritemap_entry));
  @@ -267,30 +267,44 @@
   base  = (rewrite_server_conf *)basev;
   overrides = (rewrite_server_conf *)overridesv;
   
  -a->state   = overrides->state;
  -a->options = overrides->options;
  -a->rewritelogfile  = base->rewritelogfile != NULL ?
  - base->rewritelogfile : overrides->rewritelogfile;
  -a->rewritelogfp= base->rewritelogfp != -1 ?
  - base->rewritelogfp : overrides->rewritelogfp;
  -a->rewriteloglevel = overrides->rewriteloglevel;
  -a->rewritelockfile = base->rewritelockfile != NULL ?
  - base->rewritelockfile : overrides->rewritelockfile;
  -a->rewritelockfp   = base->rewritelockfp != -1 ?
  - base->rewritelockfp : overrides->rewritelockfp;
  +a->state   = overrides->state;
  +a->options = overrides->options;
   
   if (a->options & OPTION_INHERIT) {
  -a->rewritemaps  = append_arrays(p, overrides->rewritemaps,
  -base->rewritemaps);
  -a->rewriteconds = append_arrays(p, overrides->rewriteconds,
  -base->rewriteconds);
  -a->rewriterules = append_arrays(p, overrides->rewriterules,
  -base->rewriterules);
  +/* 
  + *  local directives override 
  + *  and anything else is inherited 
  + */
  +a->rewriteloglevel = overrides->rewriteloglevel != 0 ?
  + overrides->rewriteloglevel : 
base->rewriteloglevel;
  +a->rewritelogfile  = overrides->rewritelogfile != NULL ?
  + overrides->rewritelogfile : 
base->rewritelogfile;
  +a->rewritelogfp= overrides->rewritelogfp != -1 ?
  + overrides->rewritelogfp : base->rewritelogfp;
  +a->rewritelockfile = overrides->rewritelockfile != NULL ?
  + overrides->rewritelockfile : 
base->rewritelockfile;
  +a->rewritelockfp   = overrides->rewritelockfp != -1 ?
  + overrides->rewritelockfp : base->rewritelockfp;
  +a->rewritemaps = append_arrays(p, overrides->rewritemaps,
  +   base->rewritemaps);
  +a->rewriteconds= append_arrays(p, overrides->rewriteconds,
  +   base->rewriteconds);
  +a->rewriterules= append_arrays(p, overrides->rewriterules,
  +   base->rewriterules);
   }
   else {
  -a->rewritemaps  = overrides->rewritemaps;
  -a->rewriteconds = overrides->rewriteconds;
  -a->rewriterules = overrides->rewriterules;
  +/* 
  + *  local directives override 
  + *  and anything else gets defaults 
  + */
  +a->rewriteloglevel = ov

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-26 Thread Ralf S. Engelschall
rse 98/02/26 03:13:41

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Seems today I'm very pedantic about cosmetic issues... ;-)
  
  Revision  ChangesPath
  1.75  +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- mod_rewrite.c 1998/02/26 11:04:03 1.74
  +++ mod_rewrite.c 1998/02/26 11:13:40 1.75
  @@ -2887,7 +2887,7 @@
   conf = get_module_config(r->server->module_config, &rewrite_module);
   conn = r->connection;
   
  -if (conf->rewritelogfp <0)
  +if (conf->rewritelogfp < 0)
   return;
   if (conf->rewritelogfile == NULL)
   return;
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-27 Thread Ralf S. Engelschall
rse 98/02/27 06:31:13

  Modified:src/modules/standard mod_rewrite.c
  Log:
  fixed a comment and added even more comments for better understanding.
  
  Revision  ChangesPath
  1.76  +9 -4  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- mod_rewrite.c 1998/02/26 11:13:40 1.75
  +++ mod_rewrite.c 1998/02/27 14:31:11 1.76
  @@ -1760,9 +1760,13 @@
*/
   if (strcmp(output, "-") == 0) {
   for (i = 0; p->env[i] != NULL; i++) {
  +/*  1. take the string  */
   ap_cpystrn(env, p->env[i], sizeof(env));
  +/*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
   expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
  +/*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  
*/
   expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%');
  +/*  and add the variable to Apache's structures  */
   add_env_variable(r, env);
   }
   return 2;
  @@ -1791,7 +1795,7 @@
   
   /*
*  Additionally do expansion for the environment variable
  - *  strings (`RewriteCond .. .. [E=]').
  + *  strings (`RewriteRule .. .. [E=]').
*/
   for (i = 0; p->env[i] != NULL; i++) {
   /*  1. take the string  */
  @@ -1953,12 +1957,13 @@
*   Construct the string we match against
*/
   
  -/* expand the regex backreferences from the RewriteRule ($0-$9),
  -   then from the last RewriteCond (%0-%9) and then expand the
  -   variables (%{}) */
  +/*  1. take the string  */
   ap_cpystrn(input, p->input, sizeof(input));
  +/*  2. expand $N (i.e. backrefs to RewriteRule pattern)  */
   expand_backref_inbuffer(r->pool, input, sizeof(input), briRR, '$');
  +/*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
   expand_backref_inbuffer(r->pool, input, sizeof(input), briRC, '%');
  +/*  4. expand %{...} (i.e. variables) */
   expand_variables_inbuffer(r, input, sizeof(input));
   
   /*
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-02-27 Thread Ralf S. Engelschall
rse 98/02/27 06:47:48

  Modified:src/modules/standard mod_rewrite.c
  Log:
  It's unbelievable, it's unbelievable...
  
  We have three locations where one can construct a string in rewriting rules by
  expanding $N, %N, %{NAME} and ${map:key}:
  
- RewriteCond   ...
- RewriteRule ......
- RewriteRule ...   ...  [..,E=NAME:,...]
  
  And just after I've added exact comments of what we expand in each location, I
  discovered that they are expanded totally inconsequent. For  the
  %{NAME} and ${map:key} constructs were not expanded (ok, perhaps not really a
  %major drawback) and for  the ${map:key} construct was not
  %expanded while for  all are expanded. At least the missing
  ${map:key} expansion for  is horrible because this way we
  unnesessarily restricted the usefulness of RewriteCond dramatically.
  
  Perhaps I should add more source comments to mod_rewrite.c
  to discover that it then can even can cook a cake now ;-)
  
  Revision  ChangesPath
  1.77  +10 -0 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- mod_rewrite.c 1998/02/27 14:31:11 1.76
  +++ mod_rewrite.c 1998/02/27 14:47:46 1.77
  @@ -1766,6 +1766,10 @@
   expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
   /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  
*/
   expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%');
  +/*  4. expand %{...} (i.e. variables) */
  +expand_variables_inbuffer(r, env, sizeof(env));
  +/*  5. expand ${...} (RewriteMap lookups)  */
  +expand_map_lookups(r, env, sizeof(env));
   /*  and add the variable to Apache's structures  */
   add_env_variable(r, env);
   }
  @@ -1804,6 +1808,10 @@
   expand_backref_inbuffer(r->pool, env, sizeof(env), briRR, '$');
   /*  3. expand %N (i.e. backrefs to latest RewriteCond pattern)  */
   expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%');
  +/*  4. expand %{...} (i.e. variables) */
  +expand_variables_inbuffer(r, env, sizeof(env));
  +/*  5. expand ${...} (RewriteMap lookups)  */
  +expand_map_lookups(r, env, sizeof(env));
   /*  and add the variable to Apache's structures  */
   add_env_variable(r, env);
   }
  @@ -1965,6 +1973,8 @@
   expand_backref_inbuffer(r->pool, input, sizeof(input), briRC, '%');
   /*  4. expand %{...} (i.e. variables) */
   expand_variables_inbuffer(r, input, sizeof(input));
  +/*  5. expand ${...} (RewriteMap lookups)  */
  +expand_map_lookups(r, input, sizeof(input));
   
   /*
*   Apply the patterns
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-05 Thread Ralf S. Engelschall
rse 98/03/04 23:50:33

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Make sure the returned value of rand() is not greater then RAND_MAX on systems
  like SunOS where we guessed the RAND_MAX value. This the way Ben requested but
  without the "+1" because this actually leaded to an overflow warning under
  compiletime and is not really needed because this is random number generating
  functions where it doesn't count because of the additional bounding checks.
  I've tested it now under FreeBSD 2.1.5 _and_ SunOS 4.1.3 and it both correctly
  gives numbers between 1 and N when run with l=1 and h=N. Nothing more is
  needed
  
  Revision  ChangesPath
  1.82  +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- mod_rewrite.c 1998/03/04 13:55:08 1.81
  +++ mod_rewrite.c 1998/03/05 07:50:31 1.82
  @@ -2796,7 +2796,7 @@
   char buf[50];
   
   rewrite_rand_init();
  -sprintf(buf, "%.0f", (((double)rand()/RAND_MAX)*(h-l)));
  +sprintf(buf, "%.0f", (((double)(rand()%RAND_MAX)/RAND_MAX)*(h-l)));
   i = atoi(buf)+1;
   if (i < l) i = l;
   if (i > h) i = h;
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-05 Thread Ralf S. Engelschall
rse 98/03/04 23:54:01

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Just cosmetic issues I stumpled over...
  
  Revision  ChangesPath
  1.83  +4 -4  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- mod_rewrite.c 1998/03/05 07:50:31 1.82
  +++ mod_rewrite.c 1998/03/05 07:53:59 1.83
  @@ -130,7 +130,7 @@
   **
   **  o  Runtime logic of a request is as following:
   **   while(request or subrequest)
  -**   foreach(stage #1...#9)
  +**   foreach(stage #0...#9)
   **   foreach(module) (**)
   **   try to run hook
   **
  @@ -141,7 +141,7 @@
   **
   **  o  there are two different types of result checking and
   ** continue processing:
  -** for hook #1,#4,#5,#6,#8:
  +** for hook #0,#1,#4,#5,#6,#8:
   ** hook run loop stops on first modules which gives
   ** back a result != DECLINED, i.e. it usually returns OK
   ** which says "OK, module has handled this _stage_" and for #1
  @@ -222,7 +222,7 @@
  NULL,/* [#3] header parser  */
  NULL,/* child_init  */
  NULL,/* child_exit  */
  -   NULL /* post read-request   */
  +   NULL /* [#0] post read-request  */
   };
   
   /* the cache */
  @@ -2240,7 +2240,7 @@
   }
   
   /* now check whether we could reduce it to a local path... */
  - if (matches_request_vhost(r, host, port)) {
  +if (matches_request_vhost(r, host, port)) {
   /* this is our host, so only the URL remains */
   r->filename = pstrdup(r->pool, url);
   rewritelog(r, 3, "reduce %s -> %s", olduri, r->filename);
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-05 Thread Ralf S. Engelschall
rse 98/03/05 02:48:07

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Add missing MODULE_VAR_EXPORT for mod_rewrite's module structure
  as requested by Marc. Thanks to him for discovering this.
  
  Revision  ChangesPath
  1.85  +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- mod_rewrite.c 1998/03/05 10:21:24 1.84
  +++ mod_rewrite.c 1998/03/05 10:48:05 1.85
  @@ -175,7 +175,7 @@
   };
   
   /* the main config structure */
  -module rewrite_module = {
  +module MODULE_VAR_EXPORT rewrite_module = {
  STANDARD_MODULE_STUFF,
  init_module, /* module initializer  */
  config_perdir_create,/* create per-dirconfig structures */
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-08 Thread dgaudet
dgaudet 98/03/07 18:50:15

  Modified:src/modules/standard mod_rewrite.c
  Log:
  defend against possible sh lameness
  
  Revision  ChangesPath
  1.89  +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- mod_rewrite.c 1998/03/06 13:47:40 1.88
  +++ mod_rewrite.c 1998/03/08 02:50:13 1.89
  @@ -134,7 +134,7 @@
* Name: rewrite_module
* ConfigStart
   . ./helpers/find-dbm-lib
  -if [ "$found_dbm" = "1" ]; then
  +if [ "x$found_dbm" = "x1" ]; then
   echo "  enabling DBM support for mod_rewrite"
   else
   echo "  disabling DBM support for mod_rewrite"
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-27 Thread rse
rse 98/03/27 07:43:55

  Modified:.STATUS
   src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Adjust the proxy pass-through feature in mod_rewrite to
  fit the requirements of mod_proxy again.
  
  Revision  ChangesPath
  1.225 +1 -0  apache-1.3/STATUS
  
  Index: STATUS
  ===
  RCS file: /export/home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.224
  retrieving revision 1.225
  diff -u -r1.224 -r1.225
  --- STATUS1998/03/27 14:22:36 1.224
  +++ STATUS1998/03/27 15:43:48 1.225
  @@ -115,6 +115,7 @@
   * Dean's fix for making work the `HostnameLookups Off'
   * Dean's mark of a few bitfields as signed to ensure correct code. 
   * Dean's changes to scoreboard defs which helps gcc generate better code.
  +* Ralf's fix for QUERY_STRING and the proxy pass-through of mod_rewrite
   
   Available Patches:
   
  
  
  
  1.738 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.737
  retrieving revision 1.738
  diff -u -r1.737 -r1.738
  --- CHANGES   1998/03/26 21:20:46 1.737
  +++ CHANGES   1998/03/27 15:43:49 1.738
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b6
   
  +  *) Fix the proxy pass-through feature of mod_rewrite for the case of
  + existing QUERY_STRING now that mod_proxy was recently changed because of
  + the new URL parsing stuff. [Ralf S. Engelschall]
  +
 *) A few changes to scoreboard definitions which helps gcc generate
better code.  [Dean Gaudet]
   
  
  
  
  1.94  +10 -9 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- mod_rewrite.c 1998/03/13 19:20:42 1.93
  +++ mod_rewrite.c 1998/03/27 15:43:53 1.94
  @@ -1039,10 +1039,11 @@
   /* make sure the QUERY_STRING and
* PATH_INFO parts get incorporated
*/
  -r->filename = pstrcat(r->pool, r->filename,
  -   r->path_info ? r->path_info : "",
  -   r->args ? "?" : NULL, r->args,
  -   NULL);
  +if (r->path_info != NULL) 
  +r->filename = pstrcat(r->pool, r->filename, r->path_info, 
NULL);
  +if (r->args != NULL && 
  +r->uri == r->unparsed_uri /* see 
proxy_http:proxy_http_canon() */) 
  +r->filename = pstrcat(r->pool, r->filename, "?", r->args, 
NULL);
   
   /* now make sure the request gets handled by the proxy handler */
   r->proxyreq = 1;
  @@ -1281,12 +1282,12 @@
   
   /* make sure the QUERY_STRING and
* PATH_INFO parts get incorporated
  + * (r->path_info was already appended by the
  + * rewriting engine because of the per-dir context!)
*/
  -r->filename = pstrcat(r->pool, r->filename,
  -  /* r->path_info was already
  -   * appended by the rewriting engine
  -   * because of the per-dir context!  */
  -  r->args ? "?" : NULL, r->args, NULL);
  +if (r->args != NULL &&
  +r->uri == r->unparsed_uri /* see 
proxy_http:proxy_http_canon() */) 
  +r->filename = pstrcat(r->pool, r->filename, "?", r->args, 
NULL);
   
   /* now make sure the request gets handled by the proxy handler */
   r->proxyreq = 1;
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-27 Thread rse
rse 98/03/27 07:50:25

  Modified:src/modules/standard mod_rewrite.c
  Log:
  just a few whitespace cosmetics...
  
  Revision  ChangesPath
  1.95  +4 -4  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.94
  retrieving revision 1.95
  diff -u -r1.94 -r1.95
  --- mod_rewrite.c 1998/03/27 15:43:53 1.94
  +++ mod_rewrite.c 1998/03/27 15:50:16 1.95
  @@ -801,7 +801,7 @@
   status = atoi(val);
   if (!is_HTTP_REDIRECT(status))
   return "RewriteRule: invalid HTTP response code "
  - "for flag 'R'";
  +   "for flag 'R'";
   cfg->forced_responsecode = status;
   }
   }
  @@ -820,7 +820,7 @@
   else if (   strcasecmp(key, "type") == 0
|| strcasecmp(key, "T") == 0   ) {
   cfg->forced_mimetype = pstrdup(p, val);
  - str_tolower(cfg->forced_mimetype);
  +str_tolower(cfg->forced_mimetype);
   }
   else if (   strcasecmp(key, "env") == 0
|| strcasecmp(key, "E") == 0   ) {
  @@ -3439,7 +3439,7 @@
   
   /* file stuff */
   else if (strcasecmp(var, "SCRIPT_USER") == 0) {
  - result = "";
  +result = "";
   if (r->finfo.st_mode != 0) {
   if ((pw = getpwuid(r->finfo.st_uid)) != NULL) {
   result = pw->pw_name;
  @@ -3454,7 +3454,7 @@
   }
   }
   else if (strcasecmp(var, "SCRIPT_GROUP") == 0) {
  - result = "";
  +result = "";
   if (r->finfo.st_mode != 0) {
   if ((gr = getgrgid(r->finfo.st_gid)) != NULL) {
   result = gr->gr_name;
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-27 Thread rse
rse 98/03/27 09:37:43

  Modified:.STATUS
   src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Fix ``RewriteCond ... -l''.
  
  Submitted by: Rein Tollevik <[EMAIL PROTECTED]>
  Reviewed by: Ralf S. Engelschall
  PR: 2010
  
  Revision  ChangesPath
  1.227 +1 -0  apache-1.3/STATUS
  
  Index: STATUS
  ===
  RCS file: /export/home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.226
  retrieving revision 1.227
  diff -u -r1.226 -r1.227
  --- STATUS1998/03/27 16:30:33 1.226
  +++ STATUS1998/03/27 17:37:26 1.227
  @@ -116,6 +116,7 @@
   * Dean's mark of a few bitfields as signed to ensure correct code. 
   * Dean's changes to scoreboard defs which helps gcc generate better code.
   * Ralf's fix for QUERY_STRING and the proxy pass-through of mod_rewrite
  +* Fix for symlink check in mod_rewrite's ``RewriteCond ... -l'', PR#2010
   
   Available Patches:
   
  
  
  
  1.739 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.738
  retrieving revision 1.739
  diff -u -r1.738 -r1.739
  --- CHANGES   1998/03/27 15:43:49 1.738
  +++ CHANGES   1998/03/27 17:37:31 1.739
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b6
   
  +  *) Fix the check for symbolic links in ``RewriteCond ... -l'': stat() was
  + used instead of lstat() and thus this flag didn't work as expected.
  + [Rein Tollevik <[EMAIL PROTECTED]>, PR#2010]
  +
 *) Fix the proxy pass-through feature of mod_rewrite for the case of
existing QUERY_STRING now that mod_proxy was recently changed because of
the new URL parsing stuff. [Ralf S. Engelschall]
  
  
  
  1.96  +1 -2  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- mod_rewrite.c 1998/03/27 15:50:16 1.95
  +++ mod_rewrite.c 1998/03/27 17:37:38 1.96
  @@ -2009,8 +2009,7 @@
   }
   else if (strcmp(p->pattern, "-l") == 0) {
   #if !defined(__EMX__) && !defined(WIN32)
  -/* OS/2 dosen't support links. */
  -if (stat(input, &sb) == 0)
  +if (lstat(input, &sb) == 0)
   if (S_ISLNK(sb.st_mode))
   rc = 1;
   #endif
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-04-08 Thread rse
rse 98/04/07 23:40:25

  Modified:.STATUS
   src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  A little fix for the error messages from RewriteBase directive.
  
  Submitted by: Todd Eigenschink <[EMAIL PROTECTED]>
  Reviewed by: Ralf S. Engelschall
  
  Revision  ChangesPath
  1.276 +1 -0  apache-1.3/STATUS
  
  Index: STATUS
  ===
  RCS file: /export/home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.275
  retrieving revision 1.276
  diff -u -r1.275 -r1.276
  --- STATUS1998/04/07 15:15:17 1.275
  +++ STATUS1998/04/08 06:40:21 1.276
  @@ -155,6 +155,7 @@
   * Ralf's add of the query (-q) option to apxs
   * Ralf's initial doc and Configuration.tmpl entry for mod_mmap_static
   * OS/2 tweak to deal with multiple .exe targets. [Brian Havard]
  +* Fixed ordering of argument checks for RewriteBase directive, PR#2045
   
   Available Patches:
   
  
  
  
  1.759 +3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.758
  retrieving revision 1.759
  diff -u -r1.758 -r1.759
  --- CHANGES   1998/04/06 05:21:40 1.758
  +++ CHANGES   1998/04/08 06:40:22 1.759
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3b6
   
  +  *) Fixed ordering of argument checks for RewriteBase directive.
  + [Todd Eigenschink <[EMAIL PROTECTED]>, PR#2045]
  +
 *) Change Win32 IS_MODULE to SHARED_MODULE to match Unix' method of
indicating that a module is being compiled for dynamic loading. Also
remove #define IS_MODULE from modules and add SHARED_MODULE define
  
  
  
  1.100 +2 -2  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- mod_rewrite.c 1998/04/01 14:24:35 1.99
  +++ mod_rewrite.c 1998/04/08 06:40:24 1.100
  @@ -520,10 +520,10 @@
   {
   if (cmd->path == NULL || dconf == NULL)
   return "RewriteBase: only valid in per-directory config files";
  -if (a1[0] != '/')
  -return "RewriteBase: argument is not a valid URL";
   if (a1[0] == '\0')
   return "RewriteBase: empty URL not allowed";
  +if (a1[0] != '/')
  +return "RewriteBase: argument is not a valid URL";
   
   dconf->baseurl = a1;
   
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-05 Thread rse
rse 98/05/05 07:04:22

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Repair mod_rewrite - Lars' patch Brain comitted was totally broken.
  Thanks to Ben Hyde for immediately discovering this.
  
  Revision  ChangesPath
  1.103 +22 -15apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- mod_rewrite.c 1998/05/05 04:47:59 1.102
  +++ mod_rewrite.c 1998/05/05 14:04:20 1.103
  @@ -943,11 +943,13 @@
   void *sconf;
   rewrite_server_conf *conf;
   char *var;
  -char *thisserver, *thisport, *thisurl;
  +const char *thisserver;
  +char *thisport, *thisurl;
   char buf[512];
   char docroot[512];
   char *cp, *cp2;
   struct stat finfo;
  +unsigned int port;
   int n;
   int l;
   
  @@ -998,12 +1000,12 @@
*/
   
   /* add the canonical URI of this URL */
  -thisserver = (char *) ap_get_server_name(r);
  -thisport = (char *) ap_get_server_port(r);
  -if (is_default_port((int) thisport, r))
  +thisserver = ap_get_server_name(r);
  +port = ap_get_server_port(r);
  +if (is_default_port(port, r))
   thisport = "";
   else {
  -ap_snprintf(buf, sizeof(buf), ":%u", thisport);
  +ap_snprintf(buf, sizeof(buf), ":%u", port);
   thisport = buf;
   }
   thisurl = ap_table_get(r->subprocess_env, ENVVAR_SCRIPT_URL);
  @@ -2249,8 +2251,10 @@
   static void fully_qualify_uri(request_rec *r)
   {
   int i;
  -char port[32];
  +char buf[32];
  +const char *thisserver;
   char *thisport;
  +int port;
   
   i = strlen(r->filename);
   if (!(   (i > 7 && strncasecmp(r->filename, "http://";, 7)   == 0)
  @@ -2258,20 +2262,23 @@
 || (i > 9 && strncasecmp(r->filename, "gopher://";, 9) == 0)
 || (i > 6 && strncasecmp(r->filename, "ftp://";, 6)== 0))) {
 
  -thisport = (char *) ap_get_server_port(r);
  -if (is_default_port((int) thisport,r))
  -port[0] = '\0';
  -else
  -ap_snprintf(port, sizeof(port), ":%u", thisport);
  +thisserver = ap_get_server_name(r);
  +port = ap_get_server_port(r);
  +if (is_default_port(port,r))
  +thisport = "";
  +else {
  +ap_snprintf(buf, sizeof(buf), ":%u", port);
  +thisport = buf;
  +}
   
   if (r->filename[0] == '/')
   r->filename = ap_psprintf(r->pool, "%s://%s%s%s",
  -http_method(r), ap_get_server_name(r),
  -port, r->filename);
  +http_method(r), thisserver,
  +thisport, r->filename);
   else
   r->filename = ap_psprintf(r->pool, "%s://%s%s/%s",
  -http_method(r), ap_get_server_name(r),
  -port, r->filename);
  +http_method(r), thisserver,
  +thisport, r->filename);
   }
   return;
   }
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-21 Thread rse
rse 98/05/21 03:48:36

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Make sure a MIME-type can be forced via a RewriteRule even when no
  substitution takes place, for instance via the following rule:
  
   RewriteRule ^myscript$ - [T=application/x-httpd-cgi]
  
  This was often requested by users (not only the submitter of the bug report)
  in the past to force a single script without a .cgi extension and outside any
  cgi-bin dirs to be executed as a CGI program.
  
  PR: 2254
  
  Revision  ChangesPath
  1.859 +7 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.858
  retrieving revision 1.859
  diff -u -r1.858 -r1.859
  --- CHANGES   1998/05/21 04:11:23 1.858
  +++ CHANGES   1998/05/21 10:48:33 1.859
  @@ -1,5 +1,12 @@
   Changes with Apache 1.3b7
   
  +  *) Make sure a MIME-type can be forced via a RewriteRule even when no
  + substitution takes place, for instance via the following rule:
  + ``RewriteRule ^myscript$ - [T=application/x-httpd-cgi]'' This was often
  + requested by users in the past to force a single script without a .cgi
  + extension and outside any cgi-bin dirs to be executed as a CGI program.
  + [Ralf S. Engelschall] PR#2254
  +
 *) A fix for protocol issues surrounding 400, 408, and
414 responses. [Ed Korthof]
   
  
  
  
  1.106 +29 -1 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- mod_rewrite.c 1998/05/20 15:34:26 1.105
  +++ mod_rewrite.c 1998/05/21 10:48:35 1.106
  @@ -1794,6 +1794,32 @@
   /*  and add the variable to Apache's structures  */
   add_env_variable(r, env);
   }
  +if (p->forced_mimetype != NULL) {
  +if (perdir == NULL) {
  +/* In the per-server context we can force the MIME-type
  + * the correct way by notifying our MIME-type hook handler
  + * to do the job when the MIME-type API stage is reached.
  + */
  +rewritelog(r, 2, "remember %s to have MIME-type '%s'",
  +   r->filename, p->forced_mimetype);
  +ap_table_setn(r->notes, REWRITE_FORCED_MIMETYPE_NOTEVAR,
  +  p->forced_mimetype);
  +}
  +else {
  +/* In per-directory context we operate in the Fixup API hook
  + * which is after the MIME-type hook, so our MIME-type 
handler
  + * has no chance to set r->content_type. And because we are
  + * in the situation where no substitution takes place no
  + * sub-request will happen (which could solve the
  + * restriction). As a workaround we do it ourself now
  + * immediately although this is not strictly API-conforming.
  + * But it's the only chance we have...
  + */
  +rewritelog(r, 1, "[per-dir %s] force %s to have MIME-type "
  +   "'%s'", perdir, r->filename, p->forced_mimetype);
  +r->content_type = p->forced_mimetype;
  +}
  +}
   return 2;
   }
   
  @@ -1951,7 +1977,9 @@
*  Finally we had to remember if a MIME-type should be
*  forced for this URL (`RewriteRule .. .. [T=]')
*  Later in the API processing phase this is forced by our
  - *  MIME API-hook function.
  + *  MIME API-hook function. This time its no problem even for
  + *  the per-directory context (where the MIME-type hook was
  + *  already processed) because a sub-request happens ;-)
*/
   if (p->forced_mimetype != NULL) {
   ap_table_setn(r->notes, REWRITE_FORCED_MIMETYPE_NOTEVAR,
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-27 Thread rse
rse 98/05/27 07:01:39

  Modified:src  CHANGES
   src/include compat.h http_config.h httpd.h
   src/main http_core.c http_protocol.c util.c
   src/modules/proxy mod_proxy.c
   src/modules/standard mod_rewrite.c
  Log:
  Renamed three more functions to common ap_ prefix which we missed at the
  Big Symbol Renaming because they're #defines and not real C functions:
  
   is_default_port()   ap_is_default_port()
   default_port()==>   ap_default_port()
   http_method()   ap_http_method().
  
  Submitted by: Ralf S. Engelschall (Hint by Dean Gaudet)
  Reviewed by: Brian Behlendorf
  
  Revision  ChangesPath
  1.863 +5 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.862
  retrieving revision 1.863
  diff -u -r1.862 -r1.863
  --- CHANGES   1998/05/26 00:54:06 1.862
  +++ CHANGES   1998/05/27 14:01:29 1.863
  @@ -1,4 +1,9 @@
   Changes with Apache 1.3b8
  +  
  +  *) Renamed three more functions to common ap_ prefix which we missed at the
  + Big Symbol Renaming because they're #defines and not real C functions:
  + is_default_port(), default_port(), http_method().
  + [Ralf S. Engelschall]
   
 *) A zero-length name after a $ in an SSI document should cause
just the $ to be in the expansion.  This was broken during the
  
  
  
  1.8   +3 -0  apache-1.3/src/include/compat.h
  
  Index: compat.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/include/compat.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- compat.h  1998/05/06 12:23:40 1.7
  +++ compat.h  1998/05/27 14:01:30 1.8
  @@ -101,6 +101,7 @@
   #define daemons_min_free   ap_daemons_min_free
   #define daemons_to_start   ap_daemons_to_start
   #define day_snames ap_day_snames
  +#define default_port   ap_default_port
   #define default_port_for_request   ap_default_port_for_request
   #define default_port_for_schemeap_default_port_for_scheme
   #define default_type   ap_default_type
  @@ -160,6 +161,7 @@
   #define hard_timeout   ap_hard_timeout
   #define header_parse   ap_header_parse
   #define ht_timeap_ht_time
  +#define http_methodap_http_method
   #define indap_ind
   #define index_of_response  ap_index_of_response
   #define init_alloc ap_init_alloc
  @@ -169,6 +171,7 @@
   #define internal_redirect  ap_internal_redirect
   #define internal_redirect_handler  ap_internal_redirect_handler
   #define invoke_handler ap_invoke_handler
  +#define is_default_portap_is_default_port
   #define is_directory   ap_is_directory
   #define is_fnmatch ap_is_fnmatch
   #define is_initial_req ap_is_initial_req
  
  
  
  1.87  +1 -1  apache-1.3/src/include/http_config.h
  
  Index: http_config.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/include/http_config.h,v
  retrieving revision 1.86
  retrieving revision 1.87
  diff -u -r1.86 -r1.87
  --- http_config.h 1998/05/19 18:00:59 1.86
  +++ http_config.h 1998/05/27 14:01:31 1.87
  @@ -275,7 +275,7 @@
* handle it back-compatibly, or at least signal an error).
*/
   
  -#define MODULE_MAGIC_NUMBER 19980519
  +#define MODULE_MAGIC_NUMBER 19980527
   #define STANDARD_MODULE_STUFF MODULE_MAGIC_NUMBER, -1, __FILE__, NULL, NULL
   
   /* Generic accessors for other modules to get at their own module-specific
  
  
  
  1.215 +3 -3  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.214
  retrieving revision 1.215
  diff -u -r1.214 -r1.215
  --- httpd.h   1998/05/22 00:37:29 1.214
  +++ httpd.h   1998/05/27 14:01:31 1.215
  @@ -128,9 +128,9 @@
   
   #define DEFAULT_HTTP_PORT80
   #define DEFAULT_HTTPS_PORT   443
  -#define is_default_port(port,r)  ((port) == default_port(r))
  -#define http_method(r)   "http"
  -#define  default_port(r) DEFAULT_HTTP_PORT
  +#define ap_is_default_port(port,r)   ((port) == ap_default_port(r))
  +#define ap_http_method(r)"http"
  +#define ap_default_port(r)   DEFAULT_HTTP_PORT
   
   /* - Default user name and group name running standalone -- 
*/
   /* --- These may be specified as numbers by placing a # before a number --- 
*/
  
  
  
  1.202 +6 -6  apache-1.3/src/main/

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-28 Thread rse
rse 98/05/28 04:39:26

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Remove unnecessary trailing whitespaces in my baby ;-)
  (Yeah, you know, hacking is art and I like being pedantic about whitespaces)
  
  Revision  ChangesPath
  1.109 +31 -31apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.108
  retrieving revision 1.109
  diff -u -r1.108 -r1.109
  --- mod_rewrite.c 1998/05/28 11:09:45 1.108
  +++ mod_rewrite.c 1998/05/28 11:39:25 1.109
  @@ -261,9 +261,9 @@
   a->server  = overrides->server;
   
   if (a->options & OPTION_INHERIT) {
  -/* 
  - *  local directives override 
  - *  and anything else is inherited 
  +/*
  + *  local directives override
  + *  and anything else is inherited
*/
   a->rewriteloglevel = overrides->rewriteloglevel != 0 ?
overrides->rewriteloglevel : 
base->rewriteloglevel;
  @@ -283,9 +283,9 @@
  base->rewriterules);
   }
   else {
  -/* 
  - *  local directives override 
  - *  and anything else gets defaults 
  +/*
  + *  local directives override
  + *  and anything else gets defaults
*/
   a->rewriteloglevel = overrides->rewriteloglevel;
   a->rewritelogfile  = overrides->rewritelogfile;
  @@ -366,7 +366,7 @@
   **
   */
   
  -static const char *cmd_rewriteengine(cmd_parms *cmd, 
  +static const char *cmd_rewriteengine(cmd_parms *cmd,
rewrite_perdir_conf *dconf, int flag)
   {
   rewrite_server_conf *sconf;
  @@ -392,10 +392,10 @@
   ap_get_module_config(cmd->server->module_config, 
&rewrite_module);
   
   if (cmd->path == NULL) /* is server command */
  -err = cmd_rewriteoptions_setoption(cmd->pool, 
  +err = cmd_rewriteoptions_setoption(cmd->pool,
  &(sconf->options), option);
   else   /* is per-directory command */
  -err = cmd_rewriteoptions_setoption(cmd->pool, 
  +err = cmd_rewriteoptions_setoption(cmd->pool,
  &(dconf->options), option);
   
   return err;
  @@ -407,7 +407,7 @@
   if (strcasecmp(name, "inherit") == 0)
   *options |= OPTION_INHERIT;
   else
  -return ap_pstrcat(p, "RewriteOptions: unknown option '", 
  +return ap_pstrcat(p, "RewriteOptions: unknown option '",
  name, "'\n", NULL);
   return NULL;
   }
  @@ -966,7 +966,7 @@
   if (conf->state == ENGINE_DISABLED)
   return DECLINED;
   
  -/*  
  +/*
*  check for the ugly API case of a virtual host section where no
*  mod_rewrite directives exists. In this situation we became no chance
*  by the API to setup our default per-server config so we have to
  @@ -1046,10 +1046,10 @@
   /* make sure the QUERY_STRING and
* PATH_INFO parts get incorporated
*/
  -if (r->path_info != NULL) 
  +if (r->path_info != NULL)
   r->filename = ap_pstrcat(r->pool, r->filename, r->path_info, 
NULL);
  -if (r->args != NULL && 
  -r->uri == r->unparsed_uri /* see 
proxy_http:proxy_http_canon() */) 
  +if (r->args != NULL &&
  +r->uri == r->unparsed_uri /* see 
proxy_http:proxy_http_canon() */)
   r->filename = ap_pstrcat(r->pool, r->filename, "?", r->args, 
NULL);
   
   /* now make sure the request gets handled by the proxy handler */
  @@ -1293,7 +1293,7 @@
* rewriting engine because of the per-dir context!)
*/
   if (r->args != NULL &&
  -r->uri == r->unparsed_uri /* see 
proxy_http:proxy_http_canon() */) 
  +r->uri == r->unparsed_uri /* see 
proxy_http:proxy_http_canon() */)
   r->filename = ap_pstrcat(r->pool, r->filename, "?", r->args, 
NULL);
   
   /* now make sure the request gets handled by the proxy handler */
  @@ -1564,7 +1564,7 @@
*/
   if (p->flags & RULEFLAG_FORBIDDEN) {
   rewritelog(r, 2, "forcing '%s' to be forbidden", 
r->filename);
  -r->filename = ap_pstrcat(r->pool, "forbidden:", 
  +r->filename = ap_pstrcat(r->pool, "forbidden:",
 r->filename, NULL);
   changed = 1;
   break;
  @@ -2119,7 +2119,7 @@
   }
   else {
   /* it is really a regexp pattern, so apply it */
  -rc = (regexec(p->regexp

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-29 Thread rse
rse 98/05/28 23:59:36

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Separate cosmetics from coming ap_log_error-patch.
  
  Revision  ChangesPath
  1.111 +3 -3  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.110
  retrieving revision 1.111
  diff -u -r1.110 -r1.111
  --- mod_rewrite.c 1998/05/28 22:09:58 1.110
  +++ mod_rewrite.c 1998/05/29 06:59:35 1.111
  @@ -2896,7 +2896,7 @@
   fprintf(stderr,
   "mod_rewrite: could not open reliable piped log for "
   "RewriteLog\n");
  -exit (1);
  +exit(1);
   }
   conf->rewritelogfp = ap_piped_log_write_fd(pl);
   }
  @@ -3156,8 +3156,8 @@
   fpin  = NULL;
   fpout = NULL;
   rc = ap_spawn_child(p, rewritemap_program_child,
  - (void *)map->datafile, kill_after_timeout,
  - &fpin, &fpout, &fperr);
  +(void *)map->datafile, kill_after_timeout,
  +&fpin, &fpout, &fperr);
   if (rc == 0 || fpin == NULL || fpout == NULL) {
   perror("ap_spawn_child");
   fprintf(stderr, "mod_rewrite: "
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-29 Thread rse
rse 98/05/29 02:19:42

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Some indentation cosmetics because with the ap_ prefix some long lines moved.
  
  Revision  ChangesPath
  1.113 +77 -76apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.112
  retrieving revision 1.113
  diff -u -r1.112 -r1.113
  --- mod_rewrite.c 1998/05/29 08:32:39 1.112
  +++ mod_rewrite.c 1998/05/29 09:19:41 1.113
  @@ -276,11 +276,11 @@
   a->rewritelockfp   = overrides->rewritelockfp != -1 ?
overrides->rewritelockfp : base->rewritelockfp;
   a->rewritemaps = ap_append_arrays(p, overrides->rewritemaps,
  -   base->rewritemaps);
  +  base->rewritemaps);
   a->rewriteconds= ap_append_arrays(p, overrides->rewriteconds,
  -   base->rewriteconds);
  +  base->rewriteconds);
   a->rewriterules= ap_append_arrays(p, overrides->rewriterules,
  -   base->rewriterules);
  +  base->rewriterules);
   }
   else {
   /*
  @@ -347,9 +347,9 @@
   
   if (a->options & OPTION_INHERIT) {
   a->rewriteconds = ap_append_arrays(p, overrides->rewriteconds,
  -base->rewriteconds);
  +   base->rewriteconds);
   a->rewriterules = ap_append_arrays(p, overrides->rewriterules,
  -base->rewriterules);
  +   base->rewriterules);
   }
   else {
   a->rewriteconds = overrides->rewriteconds;
  @@ -467,7 +467,7 @@
   new->checkfile = ap_pstrcat(cmd->pool, a2+4, NDBM_FILE_SUFFIX, NULL);
   #else
   return ap_pstrdup(cmd->pool, "RewriteMap: cannot use NDBM mapfile, "
  -  "because no NDBM support is compiled in");
  +  "because no NDBM support is compiled in");
   #endif
   }
   else if (strncmp(a2, "prg:", 4) == 0) {
  @@ -485,7 +485,7 @@
   new->func = rewrite_mapfunc_toupper;
   else if (sconf->state == ENGINE_ENABLED)
   return ap_pstrcat(cmd->pool, "RewriteMap: internal map not 
found:",
  -   a2+4, NULL);
  +  a2+4, NULL);
   }
   else {
   new->type  = MAPTYPE_TXT;
  @@ -498,7 +498,7 @@
   if (new->checkfile && (sconf->state == ENGINE_ENABLED)
  && (stat(new->checkfile, &st) == -1))
   return ap_pstrcat(cmd->pool, "RewriteMap: map file or program not 
found:",
  -   new->checkfile, NULL);
  +  new->checkfile, NULL);
   
   return NULL;
   }
  @@ -555,7 +555,7 @@
   /*  parse the argument line ourself */
   if (parseargline(str, &a1, &a2, &a3))
   return ap_pstrcat(cmd->pool, "RewriteCond: bad argument line '", str,
  -   "'\n", NULL);
  +  "'\n", NULL);
   
   /*  arg1: the input string */
   new->input = ap_pstrdup(cmd->pool, a1);
  @@ -587,8 +587,8 @@
   rc = ((regexp = ap_pregcomp(cmd->pool, cp, REG_EXTENDED)) == NULL);
   if (rc)
   return ap_pstrcat(cmd->pool,
  -   "RewriteCond: cannot compile regular expression '", 
a2,
  -   "'\n", NULL);
  +  "RewriteCond: cannot compile regular expression '",
  +  a2, "'\n", NULL);
   
   new->pattern = ap_pstrdup(cmd->pool, cp);
   new->regexp  = regexp;
  @@ -685,7 +685,7 @@
   /*  parse the argument line ourself */
   if (parseargline(str, &a1, &a2, &a3))
   return ap_pstrcat(cmd->pool, "RewriteRule: bad argument line '", str,
  -   "'\n", NULL);
  +  "'\n", NULL);
   
   /*  arg1: the pattern
*  try to compile the regexp to test if is ok
  @@ -698,8 +698,8 @@
   }
   if ((regexp = ap_pregcomp(cmd->pool, cp, REG_EXTENDED)) == NULL)
   return ap_pstrcat(cmd->pool,
  -   "RewriteRule: cannot compile regular expression '", 
a1,
  -   "'\n", NULL);
  +  "RewriteRule: cannot compile regular expression '",
  +  a1, "'\n", NULL);
   new->pattern = ap_pstrdup(cmd->pool, cp);
   new->regexp  = regexp;
   
  @@ -726,12 +726,12 @@
   if (cmd->path == NULL) {  /* is server command */
   new->rewriteconds   = sconf->rewriteconds;
   sconf->rewri

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-06-03 Thread rse
rse 98/06/03 05:12:12

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Fix recently introduced Win32 child spawning code in mod_rewrite.c which was
  broken because of invalid ap_pstrcat() -> strcat() transformation.  I'm a
  little bit confused: Seems like no one has actually compiled Apache with all
  modules under Win32 just before Jim rolled the 1.3.0 tarball. Because else
  someone had received a compile error. Hmmm... I knew why I hates to put code
  into mod_rewrite I couldn't test myself... :-(
  
  Revision  ChangesPath
  1.882 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.881
  retrieving revision 1.882
  diff -u -r1.881 -r1.882
  --- CHANGES   1998/06/02 12:50:44 1.881
  +++ CHANGES   1998/06/03 12:12:10 1.882
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.1
   
  +  *) Fix recently introduced Win32 child spawning code in mod_rewrite.c which
  + was broken because of invalid ap_pstrcat() -> strcat() transformation.
  + [Ralf S. Engelschall]
  +
 *) Proxy Cache Fixes: account for directory sizes, fork off garbage 
collection
to continue in background, use predefined types (off_t, size_t, time_t),
log the current cache usage percentage at LogLevel debug
  
  
  
  1.114 +2 -2  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.113
  retrieving revision 1.114
  diff -u -r1.113 -r1.114
  --- mod_rewrite.c 1998/05/29 09:19:41 1.113
  +++ mod_rewrite.c 1998/06/03 12:12:11 1.114
  @@ -3190,11 +3190,11 @@
   #if defined(WIN32)
   /* MS Windows */
   {
  -char *pCommand;
  +char pCommand[MAX_STRING_LEN];
   STARTUPINFO si;
   PROCESS_INFORMATION pi;
   
  -pCommand = strcat(SHELL_PATH, " /C ", cmd, NULL);
  +sprintf(pCommand, "%s /C %s", SHELL_PATH, cmd);
   
   memset(&si, 0, sizeof(si));
   memset(&pi, 0, sizeof(pi));
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-06-09 Thread rse
rse 98/06/09 02:35:08

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Replace two bad sprintf() calls with ap_snprintf() variants in mod_rewrite.
  The sprintf()'s were incorrectly introduced recently because Ralf didn't
  recognize that although the ap_psprintf() needs a pool (which is not available
  at the particular place in mod_rewrite) we also have the non-pool based more
  secure ap_snprintf() (which is now used).
  
  Thanks to Marc for complaining and giving the hint to ap_snprintf().
  
  Revision  ChangesPath
  1.901 +7 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.900
  retrieving revision 1.901
  diff -u -r1.900 -r1.901
  --- CHANGES   1998/06/09 05:22:10 1.900
  +++ CHANGES   1998/06/09 09:35:05 1.901
  @@ -1,5 +1,12 @@
   Changes with Apache 1.3.1
   
  +  *) Replace two bad sprintf() calls with ap_snprintf() variants in
  + mod_rewrite. The sprintf()'s were incorrectly introduced recently 
because
  + Ralf didn't recognize that although the ap_psprintf() needs a pool 
(which
  + is not available at the particular place in mod_rewrite) we also have 
the
  + non-pool based more secure ap_snprintf() (which is now used).
  + [Ralf S. Engelschall]
  +
 *) Fix missing usage description for MetaFiles directive.
[David MacKenzie <[EMAIL PROTECTED]>] PR#2384
   
  
  
  
  1.115 +3 -2  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- mod_rewrite.c 1998/06/03 12:12:11 1.114
  +++ mod_rewrite.c 1998/06/09 09:35:07 1.115
  @@ -2820,7 +2820,8 @@
   char buf[50];
   
   rewrite_rand_init();
  -sprintf(buf, "%.0f", (((double)(rand()%RAND_MAX)/RAND_MAX)*(h-l)));
  +ap_snprintf(buf, sizeof(buf), "%.0f", 
  +(((double)(rand()%RAND_MAX)/RAND_MAX)*(h-l)));
   i = atoi(buf)+1;
   if (i < l) i = l;
   if (i > h) i = h;
  @@ -3194,7 +3195,7 @@
   STARTUPINFO si;
   PROCESS_INFORMATION pi;
   
  -sprintf(pCommand, "%s /C %s", SHELL_PATH, cmd);
  +ap_snprintf(pCommand, sizeof(pCommand), "%s /C %s", SHELL_PATH, cmd);
   
   memset(&si, 0, sizeof(si));
   memset(&pi, 0, sizeof(pi));
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-06-16 Thread coar
coar98/06/16 05:19:45

  Modified:src/modules/standard mod_rewrite.c
  Log:
More style-guide cleanup (preparatory to some Vary work).
  
  Revision  ChangesPath
  1.117 +405 -213  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.116
  retrieving revision 1.117
  diff -u -r1.116 -r1.117
  --- mod_rewrite.c 1998/06/13 15:23:11 1.116
  +++ mod_rewrite.c 1998/06/16 12:19:43 1.117
  @@ -265,16 +265,21 @@
*  local directives override
*  and anything else is inherited
*/
  -a->rewriteloglevel = overrides->rewriteloglevel != 0 ?
  - overrides->rewriteloglevel : 
base->rewriteloglevel;
  -a->rewritelogfile  = overrides->rewritelogfile != NULL ?
  - overrides->rewritelogfile : 
base->rewritelogfile;
  -a->rewritelogfp= overrides->rewritelogfp != -1 ?
  - overrides->rewritelogfp : base->rewritelogfp;
  -a->rewritelockfile = overrides->rewritelockfile != NULL ?
  - overrides->rewritelockfile : 
base->rewritelockfile;
  -a->rewritelockfp   = overrides->rewritelockfp != -1 ?
  - overrides->rewritelockfp : base->rewritelockfp;
  +a->rewriteloglevel = overrides->rewriteloglevel != 0 
  +  ? overrides->rewriteloglevel
  +  : base->rewriteloglevel;
  +a->rewritelogfile  = overrides->rewritelogfile != NULL 
  +  ? overrides->rewritelogfile
  +  : base->rewritelogfile;
  +a->rewritelogfp= overrides->rewritelogfp != -1 
  +  ? overrides->rewritelogfp 
  +  : base->rewritelogfp;
  +a->rewritelockfile = overrides->rewritelockfile != NULL
  +  ? overrides->rewritelockfile
  +  : base->rewritelockfile;
  +a->rewritelockfp   = overrides->rewritelockfp != -1
  +  ? overrides->rewritelockfp
  +  : base->rewritelockfp;
   a->rewritemaps = ap_append_arrays(p, overrides->rewritemaps,
 base->rewritemaps);
   a->rewriteconds= ap_append_arrays(p, overrides->rewriteconds,
  @@ -319,14 +324,17 @@
   a->rewriteconds= ap_make_array(p, 2, sizeof(rewritecond_entry));
   a->rewriterules= ap_make_array(p, 2, sizeof(rewriterule_entry));
   
  -if (path == NULL)
  +if (path == NULL) {
   a->directory = NULL;
  +}
   else {
   /* make sure it has a trailing slash */
  -if (path[strlen(path)-1] == '/')
  +if (path[strlen(path)-1] == '/') {
   a->directory = ap_pstrdup(p, path);
  -else
  + }
  + else {
   a->directory = ap_pstrcat(p, path, "/", NULL);
  + }
   }
   
   return (void *)a;
  @@ -336,7 +344,8 @@
   {
   rewrite_perdir_conf *a, *base, *overrides;
   
  -a = (rewrite_perdir_conf *)ap_pcalloc(p, 
sizeof(rewrite_perdir_conf));
  +a = (rewrite_perdir_conf *)ap_pcalloc(p,
  +   sizeof(rewrite_perdir_conf));
   base  = (rewrite_perdir_conf *)basev;
   overrides = (rewrite_perdir_conf *)overridesv;
   
  @@ -371,13 +380,16 @@
   {
   rewrite_server_conf *sconf;
   
  -sconf = (rewrite_server_conf *)
  -ap_get_module_config(cmd->server->module_config, 
&rewrite_module);
  +sconf = 
  +(rewrite_server_conf 
*)ap_get_module_config(cmd->server->module_config,
  + &rewrite_module);
   
  -if (cmd->path == NULL) /* is server command */
  +if (cmd->path == NULL) { /* is server command */
   sconf->state = (flag ? ENGINE_ENABLED : ENGINE_DISABLED);
  -else   /* is per-directory command */
  +}
  +else   /* is per-directory command */ {
   dconf->state = (flag ? ENGINE_ENABLED : ENGINE_DISABLED);
  +}
   
   return NULL;
   }
  @@ -391,12 +403,14 @@
   sconf = (rewrite_server_conf *)
   ap_get_module_config(cmd->server->module_config, 
&rewrite_module);
   
  -if (cmd->path == NULL) /* is server command */
  +if (cmd->path == NULL) { /* is server command */
   err = cmd_rewriteoptions_setoption(cmd->pool,
  &(sconf->options), option);
  -else   /* is per-directory command */
  +}
  +else { /* is per-directory command */
   err = cmd_rewriteoptions_setoption(cmd->pool,
  

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-06-16 Thread rse
rse 98/06/16 07:03:39

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Great thanks to Ken for the source style adjustments.
  I've now only converted the introduced tabs to spaces as in the
  remaining part of the mod_rewrite.c source code for consistency.
  
  Revision  ChangesPath
  1.118 +149 -149  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.117
  retrieving revision 1.118
  diff -u -r1.117 -r1.118
  --- mod_rewrite.c 1998/06/16 12:19:43 1.117
  +++ mod_rewrite.c 1998/06/16 14:03:38 1.118
  @@ -266,20 +266,20 @@
*  and anything else is inherited
*/
   a->rewriteloglevel = overrides->rewriteloglevel != 0 
  -  ? overrides->rewriteloglevel
  -  : base->rewriteloglevel;
  + ? overrides->rewriteloglevel
  + : base->rewriteloglevel;
   a->rewritelogfile  = overrides->rewritelogfile != NULL 
  -  ? overrides->rewritelogfile
  -  : base->rewritelogfile;
  + ? overrides->rewritelogfile
  + : base->rewritelogfile;
   a->rewritelogfp= overrides->rewritelogfp != -1 
  -  ? overrides->rewritelogfp 
  -  : base->rewritelogfp;
  + ? overrides->rewritelogfp 
  + : base->rewritelogfp;
   a->rewritelockfile = overrides->rewritelockfile != NULL
  -  ? overrides->rewritelockfile
  -  : base->rewritelockfile;
  + ? overrides->rewritelockfile
  + : base->rewritelockfile;
   a->rewritelockfp   = overrides->rewritelockfp != -1
  -  ? overrides->rewritelockfp
  -  : base->rewritelockfp;
  + ? overrides->rewritelockfp
  + : base->rewritelockfp;
   a->rewritemaps = ap_append_arrays(p, overrides->rewritemaps,
 base->rewritemaps);
   a->rewriteconds= ap_append_arrays(p, overrides->rewriteconds,
  @@ -331,10 +331,10 @@
   /* make sure it has a trailing slash */
   if (path[strlen(path)-1] == '/') {
   a->directory = ap_pstrdup(p, path);
  - }
  - else {
  +}
  +else {
   a->directory = ap_pstrcat(p, path, "/", NULL);
  - }
  +}
   }
   
   return (void *)a;
  @@ -345,7 +345,7 @@
   rewrite_perdir_conf *a, *base, *overrides;
   
   a = (rewrite_perdir_conf *)ap_pcalloc(p,
  -   sizeof(rewrite_perdir_conf));
  +  
sizeof(rewrite_perdir_conf));
   base  = (rewrite_perdir_conf *)basev;
   overrides = (rewrite_perdir_conf *)overridesv;
   
  @@ -382,7 +382,7 @@
   
   sconf = 
   (rewrite_server_conf 
*)ap_get_module_config(cmd->server->module_config,
  - &rewrite_module);
  +&rewrite_module);
   
   if (cmd->path == NULL) { /* is server command */
   sconf->state = (flag ? ENGINE_ENABLED : ENGINE_DISABLED);
  @@ -423,7 +423,7 @@
   }
   else {
   return ap_pstrcat(p, "RewriteOptions: unknown option '",
  -   name, "'\n", NULL);
  +  name, "'\n", NULL);
   }
   return NULL;
   }
  @@ -497,14 +497,14 @@
   new->checkfile = NULL;
   if (strcmp(a2+4, "tolower") == 0) {
   new->func = rewrite_mapfunc_tolower;
  - }
  +}
   else if (strcmp(a2+4, "toupper") == 0) {
   new->func = rewrite_mapfunc_toupper;
  - }
  +}
   else if (sconf->state == ENGINE_ENABLED) {
   return ap_pstrcat(cmd->pool, "RewriteMap: internal map not 
found:",
 a2+4, NULL);
  - }
  +}
   }
   else {
   new->type  = MAPTYPE_TXT;
  @@ -515,9 +515,9 @@
   new->fpout = -1;
   
   if (new->checkfile && (sconf->state == ENGINE_ENABLED)
  - && (stat(new->checkfile, &st) == -1)) {
  +&& (stat(new->checkfile, &st) == -1)) {
   return ap_pstrcat(cmd->pool,
  -   "RewriteMap: map file or program not found:",
  +  "RewriteMap: map file or program not found:",
 new->checkfile, NULL);
   }
   
  @@ -593,9 +593,9 @@
   new->flags = CONDFLAG_NONE;
   

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-07-09 Thread rse
rse 98/07/09 10:13:58

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Replace a very old in-place hack for APACHE_SSL with a more clean
  ap_http_method() based variant (which is still ok for Apache-SSL because it
  patches ap_http_method() itself). This way there is now really _no_ sort of
  crypto hook in the official Apache distribution ;-)
  
  Revision  ChangesPath
  1.122 +9 -9  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -r1.121 -r1.122
  --- mod_rewrite.c 1998/07/08 17:47:18 1.121
  +++ mod_rewrite.c 1998/07/09 17:13:56 1.122
  @@ -2330,21 +2330,21 @@
   char host[LONG_STRING_LEN];
   char buf[MAX_STRING_LEN];
   char *olduri;
  +int l;
   
  -#ifdef APACHE_SSL
  -if (   (!r->connection->client->ssl &&
  -strncasecmp(r->filename, "http://";, 7) == 0)
  -|| (r->connection->client->ssl &&
  -strncasecmp(r->filename, "https://";, 8) == 0)) {
  -#else
  -if (strncasecmp(r->filename, "http://";, 7) == 0) {
  -#endif
  +cp = ap_http_method(r);
  +l  = strlen(cp);
  +if (   strlen(r->filename) > l+3 
  +&& strncasecmp(r->filename, cp, l) == 0
  +&& r->filename[l]   == ':'
  +&& r->filename[l+1] == '/'
  +&& r->filename[l+2] == '/' ) {
   /* there was really a rewrite to a remote path */
   
   olduri = ap_pstrdup(r->pool, r->filename); /* save for logging */
   
   /* cut the hostname and port out of the URI */
  -ap_cpystrn(buf, r->filename+strlen(ap_http_method(r))+3, 
sizeof(buf));
  +ap_cpystrn(buf, r->filename+(l+3), sizeof(buf));
   hostp = buf;
   for (cp = hostp; *cp != '\0' && *cp != '/' && *cp != ':'; cp++)
   ;
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-07-12 Thread pcs
pcs 98/07/12 08:47:40

  Modified:src/modules/standard mod_rewrite.c
  Log:
  Quick fix to make this compile on Windows: ifdef out reference to
  geteuid() and chown().
  
  Revision  ChangesPath
  1.124 +2 -0  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.123
  retrieving revision 1.124
  diff -u -r1.123 -r1.124
  --- mod_rewrite.c 1998/07/11 10:56:07 1.123
  +++ mod_rewrite.c 1998/07/12 15:47:39 1.124
  @@ -3213,9 +3213,11 @@
"file %s", conf->rewritelockfile);
   exit(1);
   }
  +#ifndef WIN32
   /* make sure the childs have access to this file */
   if (geteuid() == 0 /* is superuser */)
   chown(conf->rewritelockfile, ap_user_id, -1 /* no gid change */);
  +#endif
   
   return;
   }
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-07-18 Thread jim
jim 98/07/18 08:30:47

  Modified:src/helpers TestCompile
   src/include ap_config.h
   src/modules/standard mod_rewrite.c
  Log:
  Submitted by: Brian Havard" <[EMAIL PROTECTED]>
  Reviewed by:  Jim Jagielski
  EMX OS/2 Port
  
  Revision  ChangesPath
  1.13  +1 -1  apache-1.3/src/helpers/TestCompile
  
  Index: TestCompile
  ===
  RCS file: /export/home/cvs/apache-1.3/src/helpers/TestCompile,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- TestCompile   1998/07/11 10:24:07 1.12
  +++ TestCompile   1998/07/18 15:30:41 1.13
  @@ -1,6 +1,6 @@
   #!/bin/sh
   exstat=1
  -trap 'rm -f Makefile dummy testfunc.c testfunc; exit $exstat' 0 1 2 3 15
  +trap 'rm -f Makefile dummy dummy.exe testfunc.c testfunc testfunc.exe; exit 
$exstat' 0 1 2 3 15
   #
   # Yet another Apache Configure helper script.
   # This script tests certain aspects of the compilation
  
  
  
  1.227 +2 -0  apache-1.3/src/include/ap_config.h
  
  Index: ap_config.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/include/ap_config.h,v
  retrieving revision 1.226
  retrieving revision 1.227
  diff -u -r1.226 -r1.227
  --- ap_config.h   1998/07/13 12:35:53 1.226
  +++ ap_config.h   1998/07/18 15:30:43 1.227
  @@ -662,6 +662,8 @@
   #define NEED_STRNCASECMP
   #define NO_SETSID
   #define NO_TIMES
  +/* ap_config_auto.h gets this wrong, force sys/select.h to be included */
  +#define HAVE_SYS_SELECT_H
   #define CASE_BLIND_FILESYSTEM
   /* Add some drive name support */
   #define chdir _chdir2
  
  
  
  1.125 +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- mod_rewrite.c 1998/07/12 15:47:39 1.124
  +++ mod_rewrite.c 1998/07/18 15:30:46 1.125
  @@ -3213,7 +3213,7 @@
"file %s", conf->rewritelockfile);
   exit(1);
   }
  -#ifndef WIN32
  +#if !defined(__EMX__) && !defined(WIN32)
   /* make sure the childs have access to this file */
   if (geteuid() == 0 /* is superuser */)
   chown(conf->rewritelockfile, ap_user_id, -1 /* no gid change */);
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-10-28 Thread rse
rse 98/10/28 07:01:19

  Modified:src/support apxs.pl
   src/modules/standard mod_rewrite.c
  Log:
  Fix hook order in mod_rewrite's and apxs's module structure _comments_. The
  poor man who discovered this bug after he was already totally confused was
  Lincoln Stein <[EMAIL PROTECTED]>. Thanks for sharing your confusion, Lincoln.
  
  Revision  ChangesPath
  1.11  +2 -2  apache-1.3/src/support/apxs.pl
  
  Index: apxs.pl
  ===
  RCS file: /export/home/cvs/apache-1.3/src/support/apxs.pl,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- apxs.pl   1998/08/03 08:44:08 1.10
  +++ apxs.pl   1998/10/28 15:01:17 1.11
  @@ -599,11 +599,11 @@
   NULL,  /* [#1] URI to filename translation*/
   NULL,  /* [#4] validate user id from request  */
   NULL,  /* [#5] check if the user is ok _here_ */
  -NULL,  /* [#2] check access by host address   */
  +NULL,  /* [#3] check access by host address   */
   NULL,  /* [#6] determine MIME type*/
   NULL,  /* [#7] pre-run fixups */
   NULL,  /* [#9] log a transaction  */
  -NULL,  /* [#3] header parser  */
  +NULL,  /* [#2] header parser  */
   NULL,  /* child_init  */
   NULL,  /* child_exit  */
   NULL   /* [#0] post read-request  */
  
  
  
  1.131 +2 -2  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.130
  retrieving revision 1.131
  diff -u -r1.130 -r1.131
  --- mod_rewrite.c 1998/08/25 09:15:39 1.130
  +++ mod_rewrite.c 1998/10/28 15:01:18 1.131
  @@ -192,11 +192,11 @@
  hook_uri2file,   /* [#1] URI to filename translation*/
  NULL,/* [#4] validate user id from request  */
  NULL,/* [#5] check if the user is ok _here_ */
  -   NULL,/* [#2] check access by host address   */
  +   NULL,/* [#3] check access by host address   */
  hook_mimetype,   /* [#6] determine MIME type*/
  hook_fixup,  /* [#7] pre-run fixups */
  NULL,/* [#9] log a transaction  */
  -   NULL,/* [#3] header parser  */
  +   NULL,/* [#2] header parser  */
  init_child,  /* child_init  */
  NULL,/* child_exit  */
  NULL /* [#0] post read-request  */
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-12-02 Thread rse
rse 98/12/02 00:24:40

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Fixed possible (but harmless in practice) bug in the DBM lookup
  procedure of mod_rewrite: very long keys were truncated.
  
  Revision  ChangesPath
  1.1156+4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1155
  retrieving revision 1.1156
  diff -u -r1.1155 -r1.1156
  --- CHANGES   1998/12/02 06:12:09 1.1155
  +++ CHANGES   1998/12/02 08:24:35 1.1156
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.4
   
  +  *) Fixed possible (but harmless in practice) bug in the DBM lookup
  + procedure of mod_rewrite: very long keys were truncated.
  + [Ralf S. Engelschall]
  +
 *) There is no longer a _default_ path layout for APACI configure.
This means the user _HAS_ to specifiy a path layout _explicitly_.
   
  
  
  
  1.132 +4 -3  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.131
  retrieving revision 1.132
  diff -u -r1.131 -r1.132
  --- mod_rewrite.c 1998/10/28 15:01:18 1.131
  +++ mod_rewrite.c 1998/12/02 08:24:39 1.132
  @@ -2877,12 +2877,13 @@
   char buf[MAX_STRING_LEN];
   
   dbmkey.dptr  = key;
  -dbmkey.dsize = (strlen(key) < sizeof(buf) - 1 ?
  -strlen(key) : sizeof(buf)-1);
  +dbmkey.dsize = strlen(key);
   if ((dbmfp = dbm_open(file, O_RDONLY, 0666)) != NULL) {
   dbmval = dbm_fetch(dbmfp, dbmkey);
   if (dbmval.dptr != NULL) {
  -memcpy(buf, dbmval.dptr, dbmval.dsize);
  +memcpy(buf, dbmval.dptr, 
  +   dbmval.dsize < sizeof(buf)-1 ? 
  +   dbmval.dsize : sizeof(buf)-1  );
   buf[dbmval.dsize] = '\0';
   value = ap_pstrdup(r->pool, buf);
   }
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1999-04-22 Thread rse
rse 99/04/22 03:49:00

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c
  Log:
  Fix special RewriteCond "-s" pattern matching.
  
  Submitted by: Bob Finch <[EMAIL PROTECTED]>
  Reviewed by: Ralf S. Engelschall
  
  Revision  ChangesPath
  1.1325+3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1324
  retrieving revision 1.1325
  diff -u -r1.1324 -r1.1325
  --- CHANGES   1999/04/22 10:19:19 1.1324
  +++ CHANGES   1999/04/22 10:48:57 1.1325
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.7
   
  +  *) Fix special RewriteCond "-s" pattern matching.
  + [Bob Finch <[EMAIL PROTECTED]>]
  +
 *) Fix value quoting in src/Configure script for ap_config_auto.h 
[Paul Sutton <[EMAIL PROTECTED]>]
   
  
  
  
  1.138 +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.137
  retrieving revision 1.138
  diff -u -r1.137 -r1.138
  --- mod_rewrite.c 1999/04/22 09:54:37 1.137
  +++ mod_rewrite.c 1999/04/22 10:48:59 1.138
  @@ -2175,7 +2175,7 @@
   }
   }
   }
  -else if (strcmp(p->pattern, "-s ") == 0) {
  +else if (strcmp(p->pattern, "-s") == 0) {
   if (stat(input, &sb) == 0) {
   if (S_ISREG(sb.st_mode) && sb.st_size > 0) {
   rc = 1;
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-02-24 Thread Ralf S. Engelschall
rse 98/02/24 05:39:12

  Modified:src  CHANGES
   htdocs/manual/mod mod_rewrite.html
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  First part to fix the synchronization-locking for RewriteMap programs under
  Unix derivates who doesn't accept the locking of pipes directly.
  
  But we perhaps have another problem: According to FreeBSD's manpage and a hint
  by the submitter of PR#1029 flock() has to be used on opened filedescriptors
  which are _not_ duplicated via fork().  This currently is not the case...
  
  Submitted by: Ralf S. Engelschall
  Reviewed by: Ralf S. Engelschall, Jim Jagielski
  
  Revision  ChangesPath
  1.666 +6 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.665
  retrieving revision 1.666
  diff -u -r1.665 -r1.666
  --- CHANGES   1998/02/24 12:40:55 1.665
  +++ CHANGES   1998/02/24 13:39:05 1.666
  @@ -1,5 +1,11 @@
   Changes with Apache 1.3b6
   
  +  *) Fix long-standing problem with RewriteMap _programs_ under Unix 
derivates
  + (like SunOS and FreeBSD) which don't accept the locking of pipes
  + directly.  A new directive RewriteLock is introduced which can be used 
to
  + setup a separate locking file which then is used for synchronization.
  + [Ralf S. Engelschall, PR#1029]
  +
 *) WIN32: The server root is obtained from the registry key
HKLM\SOFTWARE\Apache Group\Apache\ (version is currently
"1.3 beta"), unless overridden by the -d command line flag. The
  
  
  
  1.24  +32 -2 apache-1.3/htdocs/manual/mod/mod_rewrite.html
  
  Index: mod_rewrite.html
  ===
  RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_rewrite.html,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- mod_rewrite.html  1998/02/23 08:27:36 1.23
  +++ mod_rewrite.html  1998/02/24 13:39:08 1.24
  @@ -68,6 +68,7 @@
   RewriteOptions
   RewriteLog
   RewriteLogLevel
  +RewriteLock
   RewriteMap
   RewriteBase
   RewriteCond
  @@ -252,6 +253,32 @@
   
   
   
  +RewriteLock
  +Syntax: RewriteLock Filename
  +Default: -None-
  +Context: server config, virtual host
  +
  +
  +This directive sets the filename for a synchronization lockfile which
  +mod_rewrite needs to communicate with RewriteMap
  +programs. Set this lockfile to a local path (not on a NFS-mounted
  +device) when you want to use a rewriting map-program. It is not required for
  +SAMP
  +using all other types of rewriting maps.
  +
  +
  +
  +
  +
   RewriteMap
   Avoid one common mistake: never do buffered I/O on stdout!
  -This will cause a deadloop! Hence the ``$|=1'' in the above
  -example...
  +This will cause a deadloop! Hence the ``$|=1'' in the above
  +example...
  +Use the RewriteLock directive to define a lockfile
  +mod_rewrite can use to synchronize the communication to the program.
  +Per default no such synchronization takes place.
   
   
   
  
  
  
  1.69  +109 -22   apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- mod_rewrite.c 1998/02/23 15:18:50 1.68
  +++ mod_rewrite.c 1998/02/24 13:39:10 1.69
  @@ -112,9 +112,6 @@
   /* now our own stuff ... */
   #include "mod_rewrite.h"
   
  -#ifdef USE_LOCKING
  -#include 
  -#endif 
   
   
   /*
  @@ -172,6 +169,8 @@
 "a URL-applied regexp-pattern and a substitution URL" },
   { "RewriteMap",  cmd_rewritemap,  NULL, RSRC_CONF,   TAKE2, 
 "a mapname and a filename" },
  +{ "RewriteLock", cmd_rewritelock, NULL, RSRC_CONF,   TAKE1,
  +  "the filename of a lockfile used for inter-process synchronization"},
   { "RewriteLog",  cmd_rewritelog,  NULL, RSRC_CONF,   TAKE1, 
 "the filename of the rewriting logfile" },
   { "RewriteLogLevel", cmd_rewriteloglevel, NULL, RSRC_CONF,   TAKE1, 
  @@ -250,6 +249,8 @@
   a->rewritelogfile  = NULL;
   a->rewritelogfp= -1;
   a->rewriteloglevel = 1;
  +a->rewritelockfile = NULL;
  +a->rewritelockfp   = -1;
   a->rewritemaps = make_array(p, 2, sizeof(rewritemap_entry));
   a->rewriteconds= make_array(p, 2, sizeof(rewritecond_entry));
   a->rewriterules= make_array(p, 2, sizeof(rewriterule_entry));
  @@ -272,6 +273,10 @@
   a->rewritelogfp= base->rewritelogfp != -1   ?
base->rewritelogfp : overrides->rewritelogfp;
   a->rewriteloglevel = overrides->rewriteloglevel;
  +a->rewrit

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-02-24 Thread Ralf S. Engelschall
rse 98/02/24 08:40:54

  Modified:src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  just cosmetics:
  - remove trailing spaces on lines ([ \t]+$)
  - break lines which still were over 79 chars
  - typos
  
  Revision  ChangesPath
  1.71  +234 -228  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- mod_rewrite.c 1998/02/24 15:44:31 1.70
  +++ mod_rewrite.c 1998/02/24 16:40:51 1.71
  @@ -6,7 +6,7 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
  - *notice, this list of conditions and the following disclaimer. 
  + *notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*notice, this list of conditions and the following disclaimer in
  @@ -52,8 +52,8 @@
*/
   
   
  -/*   __ _ 
  -**   _ __ ___   ___   __| |_ __ _  ___ __(_) |_ ___ 
  +/*   __ _
  +**   _ __ ___   ___   __| |_ __ _  ___ __(_) |_ ___
   **  | '_ ` _ \ / _ \ / _` |   | '__/ _ \ \ /\ / / '__| | __/ _ \
   **  | | | | | | (_) | (_| |   | | |  __/\ V  V /| |  | | ||  __/
   **  |_| |_| |_|\___/ \__,_|___|_|  \___| \_/\_/ |_|  |_|\__\___|
  @@ -62,21 +62,21 @@
   **  URL Rewriting Module
   **
   **  This module uses a rule-based rewriting engine (based on a
  -**  regular-expression parser) to rewrite requested URLs on the fly. 
  -**  
  +**  regular-expression parser) to rewrite requested URLs on the fly.
  +**
   **  It supports an unlimited number of additional rule conditions (which can
   **  operate on a lot of variables, even on HTTP headers) for granular
   **  matching and even external database lookups (either via plain text
   **  tables, DBM hash files or even external processes) for advanced URL
   **  substitution.
  -**  
  +**
   **  It operates on the full URLs (including the PATH_INFO part) both in
   **  per-server context (httpd.conf) and per-dir context (.htaccess) and even
   **  can generate QUERY_STRING parts on result.   The rewriting result finally
   **  can lead to internal subprocessing, external request redirection or even
   **  to internal proxy throughput.
   **
  -**  This module was originally written in April 1996 and 
  +**  This module was originally written in April 1996 and
   **  gifted exclusively to the The Apache Group in July 1997 by
   **
   **  Ralf S. Engelschall
  @@ -128,8 +128,8 @@
   **  Our interface to the Apache server kernel:
   **
   **  o  Runtime logic of a request is as following:
  -**   while(request or subrequest) 
  -**   foreach(stage #1...#9) 
  +**   while(request or subrequest)
  +**   foreach(stage #1...#9)
   **   foreach(module) (**)
   **   try to run hook
   **
  @@ -138,7 +138,7 @@
   ** specified is the first one called for each hook!
   ** The core module is always the last!
   **
  -**  o  there are two different types of result checking and 
  +**  o  there are two different types of result checking and
   ** continue processing:
   ** for hook #1,#4,#5,#6,#8:
   ** hook run loop stops on first modules which gives
  @@ -148,7 +148,7 @@
   ** for hook #2,#3,#7,#9:
   ** all hooks are run, independend of result
   **
  -**  o  at the last stage, the core module always 
  +**  o  at the last stage, the core module always
   **   - says "BAD_REQUEST" if r->filename does not begin with "/"
   **   - prefix URL with document_root or replaced server_root
   ** with document_root and sets r->filename
  @@ -158,23 +158,23 @@
   
   /* the table of commands we provide */
   static command_rec command_table[] = {
  -{ "RewriteEngine",   cmd_rewriteengine,   NULL, OR_FILEINFO, FLAG, 
  +{ "RewriteEngine",   cmd_rewriteengine,   NULL, OR_FILEINFO, FLAG,
 "On or Off to enable or disable (default) the whole rewriting engine" 
},
  -{ "RewriteOptions",  cmd_rewriteoptions,  NULL, OR_FILEINFO, ITERATE, 
  +{ "RewriteOptions",  cmd_rewriteoptions,  NULL, OR_FILEINFO, ITERATE,
 "List of option strings to set" },
  -{ "RewriteBase", cmd_rewritebase, NULL, OR_FILEINFO, TAKE1, 
  +{ "RewriteBase", cmd_rewritebase, NULL, OR_FILEINFO, TAKE1,
 "the base URL of the per-directory context" },
  -{ "RewriteCond", cmd_rewritecond, NULL, OR_FILEINFO, RAW_ARGS, 
  +{ "RewriteCond", cmd_rewritecond, NULL, OR_FILEINFO, RAW_ARGS,
 "a input string and a to be applied regexp-pattern" },
  -{ "RewriteRule", cmd_rewriterule, NULL,

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-03-04 Thread Ralf S. Engelschall
rse 98/03/04 05:17:01

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Reanimate the DBM support for RewriteMap in mod_rewrite by fixing two source
  code errors and making sure it is disabled when DBM support is not available
  on the used platform.
  
  Revision  ChangesPath
  1.684 +6 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.683
  retrieving revision 1.684
  diff -u -r1.683 -r1.684
  --- CHANGES   1998/03/04 12:08:45 1.683
  +++ CHANGES   1998/03/04 13:16:56 1.684
  @@ -1,5 +1,11 @@
   Changes with Apache 1.3b6
   
  +  *) Fixed the DBM RewriteMap support for mod_rewrite: First the support now
  + is automatically disabled under configure time when the dbm_xxx 
functions
  + are not available. Second, two heavy source code errors in the DBM
  + support code were fixed.  This makes DBM RewriteMap's useable again 
after
  + a long time of brokeness. [Ralf S. Engelschall]
  +
 *) Now all configuration files support Unix-style line-continuation via 
the trailing backslash ("\") character. This enables us to write down
complex or just very long directives in a more readable way.  The
  
  
  
  1.80  +22 -7 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- mod_rewrite.c 1998/03/04 02:28:23 1.79
  +++ mod_rewrite.c 1998/03/04 13:16:59 1.80
  @@ -157,6 +157,21 @@
   ** or not!
   */
   
  +/* The section for the Configure script:
  + * MODULE-DEFINITION-START
  + * Name: rewrite_module
  + * ConfigStart
  +if ./helpers/TestCompile func dbm_open; then
  +echo "  enabling DBM support for mod_rewrite"
  +else
  +echo "  disabling DBM support for mod_rewrite"
  +echo "  (perhaps you need to add -ldbm, -lndbm or -lgdbm to 
EXTRA_LIBS)"
  +CFLAGS="$CFLAGS -DNO_DBM_REWRITEMAP"
  +fi
  + * ConfigEnd
  + * MODULE-DEFINITION-END
  + */
  +
   /* the table of commands we provide */
   static command_rec command_table[] = {
   { "RewriteEngine",   cmd_rewriteengine,   NULL, OR_FILEINFO, FLAG,
  @@ -472,7 +487,7 @@
   new->checkfile = a2+4;
   }
   else if (strncmp(a2, "dbm:", 4) == 0) {
  -#ifdef HAS_NDBM_LIB
  +#ifndef NO_DBM_REWRITEMAP
   new->type  = MAPTYPE_DBM;
   new->datafile  = a2+4;
   new->checkfile = pstrcat(cmd->pool, a2+4, NDBM_FILE_SUFFIX, NULL);
  @@ -2519,13 +2534,13 @@
   }
   }
   else if (s->type == MAPTYPE_DBM) {
  -#if HAS_NDBM_LIB
  +#ifndef NO_DBM_REWRITEMAP
   if (stat(s->checkfile, &st) == -1) {
  -aplog_error(APLOG_MARK, APLOG_ERROR, r->server,
  -"mod_rewrite: can't access dbm RewriteMap "
  -"file %s: %s", s->checkfile);
  +aplog_error(APLOG_MARK, APLOG_ERR, r->server,
  +"mod_rewrite: can't access DBM RewriteMap "
  +"file %s", s->checkfile);
   rewritelog(r, 1,
  -   "can't open RewriteMap file, see error log");
  +   "can't open DBM RewriteMap file, see error 
log");
   return NULL;
   }
   value = get_cache_string(cachep, s->name, CACHEMODE_TS,
  @@ -2660,7 +2675,7 @@
   return value;
   }
   
  -#if HAS_NDBM_LIB
  +#ifndef NO_DBM_REWRITEMAP
   static char *lookup_map_dbmfile(request_rec *r, char *file, char *key)
   {
   DBM *dbmfp = NULL;
  
  
  
  1.43  +2 -2  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- mod_rewrite.h 1998/03/03 15:58:11 1.42
  +++ mod_rewrite.h 1998/03/04 13:17:00 1.43
  @@ -95,7 +95,7 @@
* But we have to stat the file for the mtime,
* so we also need to know the file extension
*/
  -#if HAS_NDBM_LIB
  +#ifndef NO_DBM_REWRITEMAP
   #include 
   #if (__FreeBSD__)
   #define NDBM_FILE_SUFFIX ".db"
  @@ -379,7 +379,7 @@
   /* rewrite map support functions */
   static char *lookup_map(request_rec *r, char *name, char *key);
   static char *lookup_map_txtfile(request_rec *r, char *file, char *key);
  -#if HAS_NDBM_LIB
  +#ifndef NO_D

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-03-04 Thread Ralf S. Engelschall
rse 98/03/04 05:55:11

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Ok, here it comes: the last bugfix for mod_rewrite on my TODO list.
  It fixes the PR's problem the way Dean initially wanted:
  On-the-fly without changing any configuration structures.
  
  Revision  ChangesPath
  1.685 +9 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.684
  retrieving revision 1.685
  diff -u -r1.684 -r1.685
  --- CHANGES   1998/03/04 13:16:56 1.684
  +++ CHANGES   1998/03/04 13:55:06 1.685
  @@ -1,5 +1,14 @@
   Changes with Apache 1.3b6
   
  +  *) Fix mod_rewrite for the ugly API case where  sections exist
  + but without any RewriteX directives. Here mod_rewrite is given no
  + chance by the API to initialise its per-server configuration and thus
  + receives the wrong one from the main server. This is now avoided by
  + remembering the server together with the config structure while
  + configuring and later assuming there is no config when we see a
  + difference between the remembered server and the one calling us. 
  + [Ralf S. Engelschall, PR#1790]
  +
 *) Fixed the DBM RewriteMap support for mod_rewrite: First the support now
is automatically disabled under configure time when the dbm_xxx 
functions
are not available. Second, two heavy source code errors in the DBM
  
  
  
  1.81  +13 -0 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.80
  retrieving revision 1.81
  diff -u -r1.80 -r1.81
  --- mod_rewrite.c 1998/03/04 13:16:59 1.80
  +++ mod_rewrite.c 1998/03/04 13:55:08 1.81
  @@ -271,6 +271,7 @@
   a->rewritemaps = make_array(p, 2, sizeof(rewritemap_entry));
   a->rewriteconds= make_array(p, 2, sizeof(rewritecond_entry));
   a->rewriterules= make_array(p, 2, sizeof(rewriterule_entry));
  +a->server  = s;
   
   return (void *)a;
   }
  @@ -285,6 +286,7 @@
   
   a->state   = overrides->state;
   a->options = overrides->options;
  +a->server  = overrides->server;
   
   if (a->options & OPTION_INHERIT) {
   /* 
  @@ -971,6 +973,17 @@
*  else return immediately!
*/
   if (conf->state == ENGINE_DISABLED)
  +return DECLINED;
  +
  +/*  
  + *  check for the ugly API case of a virtual host section where no
  + *  mod_rewrite directives exists. In this situation we became no chance
  + *  by the API to setup our default per-server config so we have to
  + *  on-the-fly assume we have the default config. But because the default
  + *  config has a disabled rewriting engine we are lucky because can
  + *  just stop operating now.
  + */
  +if (conf->server != r->server)
   return DECLINED;
   
   /*
  
  
  
  1.44  +1 -0  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- mod_rewrite.h 1998/03/04 13:17:00 1.43
  +++ mod_rewrite.h 1998/03/04 13:55:09 1.44
  @@ -263,6 +263,7 @@
   array_header *rewritemaps; /* the RewriteMap entries */
   array_header *rewriteconds;/* the RewriteCond entries (temporary) */
   array_header *rewriterules;/* the RewriteRule entries */
  +server_rec   *server;  /* the corresponding server indicator */
   } rewrite_server_conf;
   
   
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-03-05 Thread Ralf S. Engelschall
rse 98/03/05 02:21:27

  Modified:src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Shuffle #includes and #defines into private header file
  to have all this stuff at a single point for clear layout.
  
  Revision  ChangesPath
  1.84  +0 -33 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.83
  retrieving revision 1.84
  diff -u -r1.83 -r1.84
  --- mod_rewrite.c 1998/03/05 07:53:59 1.83
  +++ mod_rewrite.c 1998/03/05 10:21:24 1.84
  @@ -85,37 +85,9 @@
   */
   
   
  -
  -
  -/* from the underlaying Unix system ... */
  -#include 
  -#include 
  -#include 
  -#include 
  -#include 
  -#include 
  -#include 
  -#include 
  -#include 
  -#ifdef WIN32
  -#include "../../os/win32/passwd.h"
  -#else
  -#include 
  -#endif
  -
  -/* from the Apache server ... */
  -#include "httpd.h"
  -#include "http_config.h"
  -#include "http_request.h"
  -#include "http_core.h"
  -#include "http_log.h"
  -#include "http_vhost.h"
  -
  -/* now our own stuff ... */
   #include "mod_rewrite.h"
   
   
  -
   /*
   ** +---+
   ** |   |
  @@ -231,12 +203,7 @@
   /* whether proxy module is available or not */
   static int proxy_available;
   
  -/* maximum nmatch parameter for regexec */
  -#define MAX_NMATCH (10)
  -
   /* the txt mapfile parsing stuff */
  -#define MAPFILE_PATTERN "^([^ \t]+)[ \t]+([^ \t]+).*$"
  -#define MAPFILE_OUTPUT  "$1,$2"
   static regex_t   *lookup_map_txtfile_regexp = NULL;
   static regmatch_t lookup_map_txtfile_regmatch[MAX_NMATCH];
   
  
  
  
  1.45  +29 -1 apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- mod_rewrite.h 1998/03/04 13:55:09 1.44
  +++ mod_rewrite.h 1998/03/05 10:21:25 1.45
  @@ -1,4 +1,3 @@
  -
   /* 
* Copyright (c) 1996-1998 The Apache Group.  All rights reserved.
*
  @@ -90,6 +89,30 @@
   */
   
   
  +/* Include from the underlaying Unix system ... */
  +#include 
  +#include 
  +#include 
  +#include 
  +#include 
  +#include 
  +#include 
  +#include 
  +#include 
  +#ifdef WIN32
  +#include "../../os/win32/passwd.h"
  +#else
  +#include 
  +#endif
  +
  +/* Include from the Apache server ... */
  +#include "httpd.h"
  +#include "http_config.h"
  +#include "http_request.h"
  +#include "http_core.h"
  +#include "http_log.h"
  +#include "http_vhost.h"
  +
   /* The NDBM support:
* We support only NDBM files.
* But we have to stat the file for the mtime,
  @@ -207,6 +230,11 @@
   #endif
   
   #define MAX_ENV_FLAGS 5
  +
  +#define MAX_NMATCH10
  +
  +#define MAPFILE_PATTERN "^([^ \t]+)[ \t]+([^ \t]+).*$"
  +#define MAPFILE_OUTPUT  "$1,$2"
   
   
   /*
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-03-06 Thread Ralf S. Engelschall
rse 98/03/06 04:52:59

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Avoid the flock()<->fork() problematic by giving each child an
  own file descriptor instead of a shared one.
  
  Revision  ChangesPath
  1.692 +11 -0 apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.691
  retrieving revision 1.692
  diff -u -r1.691 -r1.692
  --- CHANGES   1998/03/06 09:37:04 1.691
  +++ CHANGES   1998/03/06 12:52:55 1.692
  @@ -1,5 +1,16 @@
   Changes with Apache 1.3b6
   
  +  *) Fix one more special locking problem for RewriteMap programs in
  + mod_rewrite: According to the documentation of flock(), "Locks are on
  + files, not file descriptors.  That is, file descriptors duplicated
  + through dup(2) or fork(2) do not result in multiple instances of a lock,
  + but rather multiple references to a single lock. If a process holding a
  + lock on a file forks and the child explicitly unlocks the file, the
  + parent will lose its lock.". To overcome this we have to make sure the
  + RewriteLock file is opened _AFTER_ the childs were spawned which is now
  + the case by opening it in the child_init instead of the module_init API
  + hook. [Ralf S. Engelschall, PR#1029]
  +
 *) Change to Location and LocationMatch semantics.  LocationMatch no
longer lets a single slash match multiple adjacent slashes in the
URL.  This change is for consistency with RewriteRule and
  
  
  
  1.87  +86 -29apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.86
  retrieving revision 1.87
  diff -u -r1.86 -r1.87
  --- mod_rewrite.c 1998/03/05 12:42:37 1.86
  +++ mod_rewrite.c 1998/03/06 12:52:57 1.87
  @@ -193,7 +193,7 @@
  hook_fixup,  /* [#7] pre-run fixups */
  NULL,/* [#9] log a transaction  */
  NULL,/* [#3] header parser  */
  -   NULL,/* child_init  */
  +   init_child,  /* child_init  */
  NULL,/* child_exit  */
  NULL /* [#0] post read-request  */
   };
  @@ -869,7 +869,7 @@
   
   /*
   **
  -**  module initialisation
  +**  Global Module Initialization
   **  [called from read_config() after all
   **  config commands were already called]
   **
  @@ -877,26 +877,42 @@
   
   static void init_module(server_rec *s, pool *p)
   {
  +/* check if proxy module is available */
  +proxy_available = is_proxy_available(s);
  +
  +/* precompile a static pattern
  +   for the txt mapfile parsing */
  +lookup_map_txtfile_regexp = pregcomp(p, MAPFILE_PATTERN, REG_EXTENDED);
  +
  +/* create the rewriting lockfile in the parent */
  +rewritelock_create(s, p);
  +register_cleanup(p, (void *)s, rewritelock_remove, null_cleanup);
  +
   /* step through the servers and
* - open each rewriting logfile
  - * - open each rewriting lockfile
* - open the RewriteMap prg:xxx programs
*/
   for (; s; s = s->next) {
   open_rewritelog(s, p);
  -open_rewritelock(s, p);
   run_rewritemap_programs(s, p);
   }
  +}
   
  -/* create the lookup cache */
  -cachep = init_cache(p);
   
  -/* check if proxy module is available */
  -proxy_available = is_proxy_available(s);
  +/*
  +**
  +**  Per-Child Module Initialization
  +**  [called after a child process is spawned]
  +**
  +*/
   
  -/* precompile a static pattern
  -   for the txt mapfile parsing */
  -lookup_map_txtfile_regexp = pregcomp(p, MAPFILE_PATTERN, REG_EXTENDED);
  +static void init_child(server_rec *s, pool *p)
  +{
  + /* open the rewriting lockfile */
  + rewritelock_open(s, p);
  +
  + /* create the lookup cache */
  + cachep = init_cache(p);
   }
   
   
  @@ -2984,37 +3000,78 @@
   ** +---+
   */
   
  -static void open_rewritelock(server_rec *s, pool *p)
  -{
  -rewrite_server_conf *conf;
  -char *fname;
  -intrewritelock_flags = ( O_WRONLY|O_APPEND|O_CREAT );
   #ifdef WIN32
  -mode_t rewritelock_mode  = ( _S_IREAD|_S_IWRITE );
  +#define REWRITELOCK_MODE ( _S_IREAD|_S_IWRITE )
   #else
  -mode_t rewritelock_mode  = ( S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH );
  +#define REWRITELOCK_MODE ( S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH )
   #endif
   
  +static void rewritelock_create(server_rec *s, pool *p)
  +{
  +  

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-03-06 Thread Ralf S. Engelschall
rse 98/03/06 05:47:42

  Modified:src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Inline the proxy availability check because the existence of the function
  is_proxy_available() is historical and from days where no find_linked_module()
  function existed and where this was a bigger function.
  
  Revision  ChangesPath
  1.88  +1 -13 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.87
  retrieving revision 1.88
  diff -u -r1.87 -r1.88
  --- mod_rewrite.c 1998/03/06 12:52:57 1.87
  +++ mod_rewrite.c 1998/03/06 13:47:40 1.88
  @@ -878,7 +878,7 @@
   static void init_module(server_rec *s, pool *p)
   {
   /* check if proxy module is available */
  -proxy_available = is_proxy_available(s);
  +proxy_available = (find_linked_module("mod_proxy.c") != NULL);
   
   /* precompile a static pattern
  for the txt mapfile parsing */
  @@ -3783,18 +3783,6 @@
   return 1;
   else
   return 0;
  -}
  -
  -/*
  -**
  -**  check if proxy module is available
  -**  i.e. if it is compiled in and turned on
  -**
  -*/
  -
  -static int is_proxy_available(server_rec *s)
  -{
  -return (find_linked_module("mod_proxy.c") != NULL);
   }
   
   
  
  
  
  1.48  +0 -3  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- mod_rewrite.h 1998/03/06 12:52:58 1.47
  +++ mod_rewrite.h 1998/03/06 13:47:41 1.48
  @@ -458,9 +458,6 @@
   static intprefix_stat(const char *path, struct stat *sb);
   static void   add_env_variable(request_rec *r, char *s);
   
  -/* Proxy Module check */
  -static int is_proxy_available(server_rec *s);
  -
   /* File locking */
   static void fd_lock(int fd);
   static void fd_unlock(int fd);
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-05-20 Thread rse
rse 98/05/20 08:34:28

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Step 1/2 for repairing mod_rewrite after the recent child spawning changes
  (child_info *pinfo !!). This is the easier part: We just avoid fiddling with
  the pinfo stuff by using the reliable piped logs. Beside this repair reason
  its the preferred way, too. The previous code in mod_rewrite is from dates
  where no reliable piped logs exist ;-)
  
  Revision  ChangesPath
  1.855 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.854
  retrieving revision 1.855
  diff -u -r1.854 -r1.855
  --- CHANGES   1998/05/20 04:22:06 1.854
  +++ CHANGES   1998/05/20 15:34:24 1.855
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b7
   
  +  *) Make mod_rewrite use ap_open_piped_log() for RewriteLog directive's
  + logfile instead of fiddling around itself with child spawning stuff.
  + [Ralf S. Engelschall]
  +
 *) Made RefererIgnore case-insensitive.
   
 *) Mod_log_agent, mod_log_referer now use ap_open_piped_log for piped logs.
  
  
  
  1.105 +6 -28 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.104
  retrieving revision 1.105
  diff -u -r1.104 -r1.105
  --- mod_rewrite.c 1998/05/19 19:19:02 1.104
  +++ mod_rewrite.c 1998/05/20 15:34:26 1.105
  @@ -2843,7 +2843,7 @@
   {
   rewrite_server_conf *conf;
   char *fname;
  -FILE *fp;
  +piped_log *pl;
   intrewritelog_flags = ( O_WRONLY|O_APPEND|O_CREAT );
   #ifdef WIN32
   mode_t rewritelog_mode=_S_IREAD|_S_IWRITE;
  @@ -2863,15 +2863,14 @@
   fname = ap_server_root_relative(p, conf->rewritelogfile);
   
   if (*conf->rewritelogfile == '|') {
  -if (!spawn_child(p, rewritelog_child, (void 
*)(conf->rewritelogfile+1),
  -kill_after_timeout, &fp, NULL)) {
  -perror("spawn_child");
  +if ((pl = ap_open_piped_log(p, conf->rewritelogfile+1)) == NULL) {
  +perror("ap_open_piped_log");
   fprintf(stderr,
  -"mod_rewrite: could not fork child for "
  -"RewriteLog process\n");
  +"mod_rewrite: could not open reliable piped log for "
  +"RewriteLog\n");
   exit (1);
   }
  -conf->rewritelogfp = fileno(fp);
  +conf->rewritelogfp = ap_piped_log_write_fd(pl);
   }
   else if (*conf->rewritelogfile != '\0') {
   if ((conf->rewritelogfp = ap_popenf(p, fname, rewritelog_flags,
  @@ -2884,27 +2883,6 @@
   }
   }
   return;
  -}
  -
  -/* Child process code for 'RewriteLog "|..."' */
  -static int rewritelog_child(void *cmd, child_info *pinfo)
  -{
  -int child_pid = 1;
  -
  -ap_cleanup_for_exec();
  -#ifdef SIGHUP
  -signal(SIGHUP, SIG_IGN);
  -#endif
  -#if defined(WIN32)
  -child_pid = spawnl(_P_NOWAIT, SHELL_PATH, SHELL_PATH, "/c",
  -   (char *)cmd, NULL);
  -#elif defined(__EMX__)
  -/* OS/2 needs a '/' */
  -execl(SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
  -#else
  -execl(SHELL_PATH, SHELL_PATH, "-c", (char *)cmd, NULL);
  -#endif
  -return(child_pid);
   }
   
   static void rewritelog(request_rec *r, int level, const char *text, ...)
  
  
  
  1.51  +0 -1  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- mod_rewrite.h 1998/05/19 19:19:03 1.50
  +++ mod_rewrite.h 1998/05/20 15:34:27 1.51
  @@ -424,7 +424,6 @@
   
   /* rewriting logfile support */
   static void  open_rewritelog(server_rec *s, pool *p);
  -static int   rewritelog_child(void *cmd, child_info *pinfo);
   static void  rewritelog(request_rec *r, int level, const char *text, ...)
   __attribute__((format(printf,3,4)));
   static char *current_logtime(request_rec *r);
  
  
  


Re: cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-05-22 Thread Ralf S. Engelschall

In article <[EMAIL PROTECTED]> you wrote:

> Beachtet dieser Patch die ExecCGI option? Oder kann man die damit
> unterlaufen?

No, ExecCGI is still needed. And BTW, this is not a new feature, the [T=xxx]
option exists for years.  And it always was used this way. All I changed this
time was to remove the inconsistency with the "-" pseudo-substitution URL
(which means no subst). Nothing else. In the past one has to rewrite the URL
to whatever and the whatever back to the URL to achieve this effect because
"-" didn't honor the MIME-type stuff. So, no new features or new bugs, just
one inconsistency less.
   Ralf S. Engelschall
   [EMAIL PROTECTED]
   www.engelschall.com


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-05-28 Thread rse
rse 98/05/28 04:09:47

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Upgrade the child spawning code in mod_rewrite for the RewriteMap programs:
  ap_spawn_child_err() is used and the Win32 case now uses CreateProcess()
  instead of a low-level execl() (which caused problems in the past under
  Win32).
  
  Reviewed by: Ben Laurie
  
  Revision  ChangesPath
  1.869 +6 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.868
  retrieving revision 1.869
  diff -u -r1.868 -r1.869
  --- CHANGES   1998/05/28 10:57:56 1.868
  +++ CHANGES   1998/05/28 11:09:44 1.869
  @@ -1,4 +1,10 @@
   Changes with Apache 1.3b8
  + 
  +  *) Upgrade the child spawning code in mod_rewrite for the RewriteMap
  + programs: ap_spawn_child_err() is used and the Win32 case now uses
  + CreateProcess() instead of a low-level execl() (which caused problems in
  + the past under Win32).
  + [Ralf S. Engelschall]
   
 *) A few cosmetics and trivial enhancements to APXS to make the
generated Makefile more user friendly. [Ralf S. Engelschall]
  
  
  
  1.108 +40 -6 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.107
  retrieving revision 1.108
  diff -u -r1.107 -r1.108
  --- mod_rewrite.c 1998/05/27 14:01:38 1.107
  +++ mod_rewrite.c 1998/05/28 11:09:45 1.108
  @@ -3127,6 +3127,7 @@
   rewrite_server_conf *conf;
   FILE *fpin;
   FILE *fpout;
  +FILE *fperr;
   array_header *rewritemaps;
   rewritemap_entry *entries;
   rewritemap_entry *map;
  @@ -3154,16 +3155,18 @@
   continue;
   fpin  = NULL;
   fpout = NULL;
  -rc = spawn_child(p, rewritemap_program_child, (void *)map->datafile,
  - kill_after_timeout, &fpin, &fpout);
  +rc = ap_spawn_child_err(p, rewritemap_program_child, 
  +(void *)map->datafile, kill_after_timeout, 
  +&fpin, &fpout, &fperr);
   if (rc == 0 || fpin == NULL || fpout == NULL) {
  -perror("spawn_child");
  +perror("ap_spawn_child");
   fprintf(stderr, "mod_rewrite: "
   "could not fork child for RewriteMap process\n");
   exit(1);
   }
   map->fpin  = fileno(fpin);
   map->fpout = fileno(fpout);
  +map->fperr = fileno(fperr);
   }
   return;
   }
  @@ -3173,17 +3176,48 @@
   {
   int child_pid = 1;
   
  +/* 
  + * Prepare for exec 
  + */
   ap_cleanup_for_exec();
   #ifdef SIGHUP
   signal(SIGHUP, SIG_IGN);
   #endif
  +
  +/* 
  + * Exec() the child program
  + */
   #if defined(WIN32)
  -child_pid = spawnl(_P_NOWAIT, SHELL_PATH, SHELL_PATH,
  -   "/c", (char *)cmd, NULL);
  +/* MS Windows */
  +{
  +char *pCommand;
  +STARTUPINFO si;
  +PROCESS_INFORMATION pi;
  +
  +pCommand = strcat(SHELL_PATH, " /C ", cmd, NULL);
  +
  +memset(&si, 0, sizeof(si));
  +memset(&pi, 0, sizeof(pi));
  +
  +si.cb  = sizeof(si);
  +si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
  +si.wShowWindow = SW_HIDE;
  +si.hStdInput   = pinfo->hPipeInputRead;
  +si.hStdOutput  = pinfo->hPipeOutputWrite;
  +si.hStdError   = pinfo->hPipeErrorWrite;
  +
  +if (CreateProcess(NULL, pCommand, NULL, NULL, TRUE, 0, 
  +  environ, NULL, &si, &pi)) {
  +CloseHandle(pi.hProcess);
  +CloseHandle(pi.hThread);
  +child_pid = pi.dwProcessId;
  +}
  +}
   #elif defined(__EMX__)
  -/* OS/2 needs a '/' */
  +/* IBM OS/2 */
   execl(SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
   #else
  +/* Standard Unix */
   execl(SHELL_PATH, SHELL_PATH, "-c", (char *)cmd, NULL);
   #endif
   return(child_pid);
  
  
  
  1.52  +1 -0  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- mod_rewrite.h 1998/05/20 15:34:27 1.51
  +++ mod_rewrite.h 1998/05/28 11:09:46 1.52
  @@ -252,6 +252,7 @@
   int   type;/* the type of the map */
   int   fpin;/* in  file pointer for program maps */
   int   fpout;   /* out file 

cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-05-29 Thread rse
rse 98/05/29 01:32:41

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  Change usage of perror()+fprintf(stderr,...) in mod_rewrite to more proper
  ap_log_error() variants. Same Brian has done for the other modules, BTW.
  
  Revision  ChangesPath
  1.876 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.875
  retrieving revision 1.876
  diff -u -r1.875 -r1.876
  --- CHANGES   1998/05/29 07:59:55 1.875
  +++ CHANGES   1998/05/29 08:32:36 1.876
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b8
   
  +  *) Change usage of perror()+fprintf(stderr,...) in mod_rewrite to
  + more proper ap_log_error() variants.
  + [Ralf S. Engelschall]
  +
 *) Make sure the argument for the --add-module option to APACI's configure
script is of type [path/to/]mod_xxx.c because all calculations inside
configure and src/Configure depend on this.
  
  
  
  1.112 +25 -43apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.111
  retrieving revision 1.112
  diff -u -r1.111 -r1.112
  --- mod_rewrite.c 1998/05/29 06:59:35 1.111
  +++ mod_rewrite.c 1998/05/29 08:32:39 1.112
  @@ -2892,10 +2892,9 @@
   
   if (*conf->rewritelogfile == '|') {
   if ((pl = ap_open_piped_log(p, conf->rewritelogfile+1)) == NULL) {
  -perror("ap_open_piped_log");
  -fprintf(stderr,
  -"mod_rewrite: could not open reliable piped log for "
  -"RewriteLog\n");
  +ap_log_error(APLOG_MARK, APLOG_ERR, s, 
  + "mod_rewrite: could not open reliable pipe "
  + "to RewriteLog filter %s", conf->rewritelogfile+1);
   exit(1);
   }
   conf->rewritelogfp = ap_piped_log_write_fd(pl);
  @@ -2903,10 +2902,9 @@
   else if (*conf->rewritelogfile != '\0') {
   if ((conf->rewritelogfp = ap_popenf(p, fname, rewritelog_flags,
rewritelog_mode)) < 0) {
  -perror("open");
  -fprintf(stderr,
  -"mod_rewrite: could not open RewriteLog file %s.\n",
  -fname);
  +ap_log_error(APLOG_MARK, APLOG_ERR, s, 
  + "mod_rewrite: could not open RewriteLog "
  + "file %s", fname);
   exit(1);
   }
   }
  @@ -2980,9 +2978,9 @@
   (unsigned long)(r->server), (unsigned long)r,
   type, redir, level, str2);
   
  -fd_lock(conf->rewritelogfp);
  +fd_lock(r, conf->rewritelogfp);
   write(conf->rewritelogfp, str3, strlen(str3));
  -fd_unlock(conf->rewritelogfp);
  +fd_unlock(r, conf->rewritelogfp);
   
   va_end(ap);
   return;
  @@ -3042,9 +3040,9 @@
   if ((conf->rewritelockfp = ap_popenf(p, conf->rewritelockfile,
 O_WRONLY|O_CREAT,
 REWRITELOCK_MODE)) < 0) {
  -perror("open");
  -fprintf(stderr, "mod_rewrite: Parent could not create RewriteLock"
  -" file %s.\n", conf->rewritelockfile);
  +ap_log_error(APLOG_MARK, APLOG_ERR, s,
  + "mod_rewrite: Parent could not create RewriteLock "
  + "file %s", conf->rewritelockfile);
   exit(1);
   }
   return;
  @@ -3065,9 +3063,9 @@
   if ((conf->rewritelockfp = ap_popenf(p, conf->rewritelockfile,
 O_WRONLY,
 REWRITELOCK_MODE)) < 0) {
  -perror("open");
  -fprintf(stderr, "mod_rewrite: Child could not open RewriteLock"
  -" file %s.\n", conf->rewritelockfile);
  +ap_log_error(APLOG_MARK, APLOG_ERR, s,
  + "mod_rewrite: Child could not open RewriteLock "
  + "file %s", conf->rewritelockfile);
   exit(1);
   }
   return;
  @@ -3098,7 +3096,7 @@
   conf = ap_get_module_config(r->server->module_config, &rewrite_module);
   
   if (conf->rewritelockfp != -1)
  -fd_lock(conf->rewritelockfp);
  +fd_lock(r, conf->rewritelockfp);
   return;
   }
   
  @@ -3109,7 +3107,7 @@
   conf = ap_get_module_config(r->server->module_config, &rewrite_module);
   
   if (conf->rewritelockfp != -1)
  -fd_unlock(conf->rewritelockfp);
  +fd_unlock(r, conf->rewritelockfp);
   return;
   }
   
  @@ -3159,9 +3157,9 @@
   (void *)map->datafile, kill_after_timeout,
  

Re: cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-06-08 Thread Marc Slemko
On 3 Jun 1998 [EMAIL PROTECTED] wrote:

> rse 98/06/03 05:12:12
> 
>   Modified:src  CHANGES
>src/modules/standard mod_rewrite.c
>   Log:
>   Fix recently introduced Win32 child spawning code in mod_rewrite.c which was
>   broken because of invalid ap_pstrcat() -> strcat() transformation.  I'm a
>   little bit confused: Seems like no one has actually compiled Apache with all
>   modules under Win32 just before Jim rolled the 1.3.0 tarball. Because else
>   someone had received a compile error. Hmmm... I knew why I hates to put code
>   into mod_rewrite I couldn't test myself... :-(

Why is it using sprintf?

No.  Code.  Should.  Use.  sprintf.  Almost.

We have an ap_snprintf.  Use it.  I don't care if it isn't necessary or
you think it isn't necessary or it may not be necessary or you hope it
isn't necessary.  Always unless you shouldn't. And I see no reason why you
shouldn't here. 


>   +++ mod_rewrite.c   1998/06/03 12:12:11 1.114
>   @@ -3190,11 +3190,11 @@
>#if defined(WIN32)
>/* MS Windows */
>{
>   -char *pCommand;
>   +char pCommand[MAX_STRING_LEN];
>STARTUPINFO si;
>PROCESS_INFORMATION pi;
>
>   -pCommand = strcat(SHELL_PATH, " /C ", cmd, NULL);
>   +sprintf(pCommand, "%s /C %s", SHELL_PATH, cmd);
>
>memset(&si, 0, sizeof(si));
>memset(&pi, 0, sizeof(pi));
>   
>   
>   
> 




cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-07-11 Thread rse
rse 98/07/11 03:56:09

  Modified:src  CHANGES
   src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
  mod_rewrite created RewriteLock files under the uid of the parent process,
  thus the child processes had no write access to the files.  Now a chown() is
  done to the uid of the childs if applicable.
  
  Submitted by: Lars Eilebrecht
  Reviewed and fixed by: Ralf S. Engelschall
  PR: 2341
  
  PS: Lars, I've changed s->server_uid to ap_user_id because s->server_uid
  can be different inside virtual hosts for the suEXEC mechanism. But
  we need the uid of the process, so ap_user_id is correct IMHO.
  And I've searched for the PR in the bugdb for you and noted it above.
  
  Revision  ChangesPath
  1.960 +5 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.959
  retrieving revision 1.960
  diff -u -r1.959 -r1.960
  --- CHANGES   1998/07/11 10:24:05 1.959
  +++ CHANGES   1998/07/11 10:56:03 1.960
  @@ -1,5 +1,10 @@
   Changes with Apache 1.3.1
   
  +  *) mod_rewrite created RewriteLock files under the uid of the parent
  + process, thus the child processes had no write access to the files.
  + Now a chown() is done to the uid of the childs if applicable.
  + [Lars Eilebrecht, Ralf S. Engelschall] PR#2341
  +
 *) Autogenerate some HAVE_X_H defines in conf_auto.h (determined via
TestCompile) instead of defining them manually in conf.h based on less
accurate platform definitions. This way we no longer have to fiddle with
  
  
  
  1.123 +4 -0  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.122
  retrieving revision 1.123
  diff -u -r1.122 -r1.123
  --- mod_rewrite.c 1998/07/09 17:13:56 1.122
  +++ mod_rewrite.c 1998/07/11 10:56:07 1.123
  @@ -3213,6 +3213,10 @@
"file %s", conf->rewritelockfile);
   exit(1);
   }
  +/* make sure the childs have access to this file */
  +if (geteuid() == 0 /* is superuser */)
  +chown(conf->rewritelockfile, ap_user_id, -1 /* no gid change */);
  +
   return;
   }
   
  
  
  
  1.54  +1 -0  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- mod_rewrite.h 1998/05/29 08:32:40 1.53
  +++ mod_rewrite.h 1998/07/11 10:56:08 1.54
  @@ -107,6 +107,7 @@
   /* Include from the Apache server ... */
   #include "httpd.h"
   #include "http_config.h"
  +#include "http_conf_globals.h"
   #include "http_request.h"
   #include "http_core.h"
   #include "http_log.h"
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-07-23 Thread coar
coar98/07/23 04:34:02

  Modified:src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
Add some capability for setting the Vary response field when
mod_rewrite makes changes based upon request fields.  This is
by no means a complete treatment of the problem (redirects don't
inherit the Vary at the moment, for instance), but at least
we're not ignoring Vary here completely any more.
  
  PR:   1644
  Reviewed by:  Ralf Engelschall
  
  Revision  ChangesPath
  1.126 +20 -0 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- mod_rewrite.c 1998/07/18 15:30:46 1.125
  +++ mod_rewrite.c 1998/07/23 11:34:00 1.126
  @@ -1728,6 +1728,7 @@
   {
   char *uri;
   char *output;
  +const char *vary;
   char newuri[MAX_STRING_LEN];
   char env[MAX_STRING_LEN];
   regex_t *regexp;
  @@ -1841,6 +1842,7 @@
   /*  One condition is false, but another can be
*  still true, so we have to continue...
*/
  + ap_table_unset(r->notes, VARY_KEY_THIS);
   continue;
   }
   else {
  @@ -1866,13 +1868,30 @@
   break;
   }
   }
  + vary = ap_table_get(r->notes, VARY_KEY_THIS);
  + if (vary != NULL) {
  + ap_table_merge(r->notes, VARY_KEY, vary);
  + ap_table_unset(r->notes, VARY_KEY_THIS);
  + }
   }
   /*  if any condition fails the complete rule fails  */
   if (failed) {
  +ap_table_unset(r->notes, VARY_KEY);
  +ap_table_unset(r->notes, VARY_KEY_THIS);
   return 0;
   }
   
   /*
  + * Regardless of what we do next, we've found a match.  Check to see
  + * if any of the request header fields were involved, and add them
  + * to the Vary field of the response.
  + */
  +if ((vary = ap_table_get(r->notes, VARY_KEY)) != NULL) {
  +ap_table_merge(r->headers_out, "Vary", vary);
  + ap_table_unset(r->notes, VARY_KEY);
  +}
  +
  +/*
*  If this is a pure matching rule (`RewriteRule  -')
*  we stop processing and return immediately. The only thing
*  we have not to forget are the environment variables
  @@ -3718,6 +3737,7 @@
   continue;
   }
   if (strcasecmp(hdrs[i].key, name) == 0) {
  + ap_table_merge(r->notes, VARY_KEY_THIS, name);
   return hdrs[i].val;
   }
   }
  
  
  
  1.56  +7 -0  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- mod_rewrite.h 1998/07/13 11:32:46 1.55
  +++ mod_rewrite.h 1998/07/23 11:34:01 1.56
  @@ -113,6 +113,13 @@
   #include "http_log.h"
   #include "http_vhost.h"
   
  +/*
  + * The key in the r->notes table wherein we store our accumulated
  + * Vary values, and the one used for per-condition checks in a chain.
  + */
  +#define VARY_KEY "rewrite-Vary"
  +#define VARY_KEY_THIS "rewrite-Vary-this"
  +
   /* The NDBM support:
* We support only NDBM files.
* But we have to stat the file for the mtime,