X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=www%2Fwcgi.c;h=6242f9075ac18eb43566310ffb8909d5456feb9d;hb=4938d0c2e8f4e1eec397c2bfbbc7e23fd150c369;hp=09b1ff9880c90060f496f62a41d576d7d11883b6;hpb=7c2d86a77557592c7dd8d5415d8345f9bb74661c;p=egate.git diff --git a/www/wcgi.c b/www/wcgi.c index 09b1ff9..6242f90 100644 --- a/www/wcgi.c +++ b/www/wcgi.c @@ -41,7 +41,10 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. * * $Log: wcgi.c,v $ - * Revision 1.16 1996/02/12 10:10:29 adam + * Revision 1.17 1996/02/26 10:36:15 adam + * Better error handling when (re)spawn of the shell fails. + * + * Revision 1.16 1996/02/12 10:10:29 adam * Resource/config system used by the gateway. * * Revision 1.15 1996/01/26 09:02:20 adam @@ -143,7 +146,7 @@ static void fatal(char *p) static int spawn (char *sprog, int id) { - int r; + int r, fd; char path[256]; char envstr[80]; @@ -154,7 +157,7 @@ static int spawn (char *sprog, int id) { case -1: gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "fork"); - exit(1); + fatal ("Internal error in server"); case 0: close (0); close (1); @@ -162,7 +165,13 @@ static int spawn (char *sprog, int id) gw_log (GW_LOG_DEBUG, prog, "execl %s", path); execl (path, sprog, 0); gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "execl %s", path); - exit(0); + fd = open (serverp, O_WRONLY); + if (fd >= 0) + { + write (fd, "FA", 2); + close (fd); + } + exit(1); default: return r; }