stoddard    99/10/12 07:45:59

  Modified:    src/modules/standard mod_cgi.c
  Log:
  Fix bug interpreting cgi_child return code. Do some clean-up.
  
  Revision  Changes    Path
  1.8       +6 -16     apache-2.0/src/modules/standard/mod_cgi.c
  
  Index: mod_cgi.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/modules/standard/mod_cgi.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- mod_cgi.c 1999/10/12 04:06:58     1.7
  +++ mod_cgi.c 1999/10/12 14:45:57     1.8
  @@ -295,7 +295,7 @@
       char *argv0;
   };
   
  -static int  cgi_child(struct cgi_child_stuff *child_stuff,
  +static ap_status_t cgi_child(struct cgi_child_stuff *child_stuff,
                         BUFF **script_out, BUFF **script_in, BUFF **script_err)
   {
       struct cgi_child_stuff *cld = child_stuff;
  @@ -308,7 +308,7 @@
       ap_procattr_t *procattr;
       ap_proc_t *procnew;
       ap_os_proc_t fred;
  -    int rc;
  +    ap_status_t rc = APR_SUCCESS;
   
   #ifdef DEBUG_CGI
   #ifdef OS2
  @@ -346,11 +346,6 @@
        * NB only ISINDEX scripts get decoded arguments.
        */
   
  -#ifdef TPF
  -    ap_unblock_alarms();
  -
  -    return (0);
  -#else
       ap_cleanup_for_exec();
   
       if ((ap_createprocattr_init(&procattr, child_context) != APR_SUCCESS) ||
  @@ -363,9 +358,7 @@
           /* Something bad happened, tell the world. */
        ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
                      "couldn't create child process: %s", r->filename);
  -        ap_unblock_alarms();
  -
  -        return (-1);
  +        rc = !APR_SUCCESS;
       }
       else {
   
  @@ -409,12 +402,9 @@
                   *script_err = ap_bcreate(child_context, B_RD);
               }
           }
  -
  -        ap_unblock_alarms();
  -
  -        return (rc);
       }
  -#endif  /* TPF */
  +    ap_unblock_alarms();
  +    return (rc);
   }
   
   static int cgi_handler(request_rec *r)
  @@ -500,7 +490,7 @@
        * waiting for free_proc_chain to cleanup in the middle of an
        * SSI request -djg
        */
  -    if (cgi_child(&cld, &script_out, &script_in, &script_err) < 0) {
  +    if (cgi_child(&cld, &script_out, &script_in, &script_err) != 
APR_SUCCESS) {
           ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
                         "couldn't spawn child process: %s", r->filename);
           return HTTP_INTERNAL_SERVER_ERROR;
  
  
  

Reply via email to