Return-Path: Delivered-To: apache-cvs-archive@hyperreal.org Received: (qmail 4515 invoked by uid 6000); 20 May 1998 15:34:30 -0000 Received: (qmail 4509 invoked by alias); 20 May 1998 15:34:29 -0000 Delivered-To: apache-1.3-cvs@hyperreal.org Received: (qmail 4506 invoked by uid 168); 20 May 1998 15:34:28 -0000 Date: 20 May 1998 15:34:28 -0000 Message-ID: <19980520153428.4505.qmail@hyperreal.org> From: rse@hyperreal.org To: apache-1.3-cvs@hyperreal.org Subject: cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h Sender: apache-cvs-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org 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 Changes Path 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; int rewritelog_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);