You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@locus.apache.org on 2000/12/13 19:01:23 UTC

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

wrowe       00/12/13 10:01:22

  Modified:    src      CHANGES
               src/modules/standard mod_cgi.c
  Log:
    *) mod_cgi on Win32 and Netware now does a more effective job of
       capturing all stderr output from user's scripts.  PR6161
  
  Submitted by:	Hardy Braunsdorf <ha...@metechnology.com>
  Reviewed by:	William Rowe
  
  Revision  Changes    Path
  1.1606    +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1605
  retrieving revision 1.1606
  diff -u -r1.1605 -r1.1606
  --- CHANGES	2000/12/13 05:06:41	1.1605
  +++ CHANGES	2000/12/13 18:01:19	1.1606
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.15
   
  +  *) mod_cgi on Win32 and Netware now does a more effective job of
  +     capturing all stderr output from user's scripts.  PR6161
  +     [Hardy Braunsdorf <ha...@metechnology.com>, Will Rowe]
  +
     *) mod_status now respects ?refresh=n of 1 or greater.  If the given
        refresh value is not a number, ?refresh is set to 1 second.
        [William Rowe, Dirk Ahlers <th...@darkride.net> PR5067]
  
  
  
  1.96      +24 -5     apache-1.3/src/modules/standard/mod_cgi.c
  
  Index: mod_cgi.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_cgi.c,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- mod_cgi.c	2000/11/14 09:57:20	1.95
  +++ mod_cgi.c	2000/12/13 18:01:21	1.96
  @@ -529,9 +529,19 @@
   	    while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_in) > 0) {
   		continue;
   	    }
  -	    while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
  -		continue;
  -	    }
  +#if defined(WIN32) || defined(NETWARE)
  +            /* Soak up stderr and redirect it to the error log.
  +             * Script output to stderr is already directed to the error log
  +             * on Unix, thanks to the magic of fork().
  +             */
  +            while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
  +                ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, r, 
  +                              "%s", argsbuffer);            
  +            }
  +#else
  +	    while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0)
  +	        continue;
  +#endif
   	    ap_kill_timeout(r);
   
   
  @@ -564,9 +574,18 @@
   	ap_bclose(script_in);
   
   	ap_soft_timeout("soaking script stderr", r);
  -	while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
  +#if defined(WIN32) || defined(NETWARE)
  +        /* Script output to stderr is already directed to the error log
  +         * on Unix, thanks to the magic of fork().
  +         */
  +        while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0) {
  +            ap_log_rerror(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, r, 
  +                          "%s", argsbuffer);            
  +        }
  +#else
  +	while (ap_bgets(argsbuffer, HUGE_STRING_LEN, script_err) > 0)
   	    continue;
  -	}
  +#endif
   	ap_kill_timeout(r);
   	ap_bclose(script_err);
       }