X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=www%2Fwcgi.c;h=0d55ccb5687631a1bc833068cc444281e06808b7;hb=94e0e8ff10cdb5142f983cd76156310461f9eb89;hp=d2b915de31ff9f76e43680451d42134a0c695923;hpb=71b5b2cf0d923cf64e9353c9250bd2912e446e0a;p=egate.git diff --git a/www/wcgi.c b/www/wcgi.c index d2b915d..0d55ccb 100644 --- a/www/wcgi.c +++ b/www/wcgi.c @@ -41,7 +41,11 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. * * $Log: wcgi.c,v $ - * Revision 1.5 1995/11/06 10:51:15 adam + * Revision 1.6 1995/11/06 17:44:22 adam + * State reestablised when shell restarts. History of previous + * result sets. + * + * Revision 1.5 1995/11/06 10:51:15 adam * End of response marker in response from wsh/wproto to wcgi. * Shells are respawned when necessary. * @@ -195,15 +199,15 @@ int main() gw_log (GW_LOG_DEBUG, prog, "Synchronizing with client"); if ((linein = open(serverp, O_RDONLY)) < 0) { - gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "open server %s", serverp); + gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "open %s", serverp); fatal("Internal error in server."); } if (read(linein, combuf, 2) < 2 || strcmp(combuf, "OK")) { - gw_log (GW_LOG_FATAL, prog, "Failed to synchronize with client."); + gw_log (GW_LOG_FATAL, prog, "Failed to synchronize with client"); fatal("Internal error in server"); } - gw_log (GW_LOG_DEBUG, prog, "Synchronized."); + gw_log (GW_LOG_DEBUG, prog, "Synchronized"); } sprintf(clientp, "%s/clt%d", tmp, gw_id); gw_log (GW_LOG_DEBUG, prog, "Opening %s", clientp); @@ -227,7 +231,7 @@ int main() gw_log (GW_LOG_DEBUG, prog, "Synchronizing with client"); if ((linein = open(serverp, O_RDONLY)) < 0) { - gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "open server %s", serverp); + gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "open %s", serverp); fatal("Internal error in server"); } if (read(linein, combuf, 2) < 2 || strcmp(combuf, "OK")) @@ -239,12 +243,11 @@ int main() if ((lineout = open(clientp, O_WRONLY)) < 0) { gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "%s", clientp); - gw_db_close (gw_db); - exit (1); + fatal("Internal error in server"); } } gw_db_close (gw_db); - gw_log (GW_LOG_DEBUG, prog, "Decoding user data."); + gw_log (GW_LOG_DEBUG, prog, "Decoding user data"); p = combuf + sizeof(data); strcpy(p, serverp); p += strlen(p) + 1; @@ -255,26 +258,26 @@ int main() { if (read(0, p, data) < data) { - gw_log (GW_LOG_FATAL, prog, "Failed to read input."); - fatal("Internal error in server."); + gw_log (GW_LOG_FATAL, prog, "Failed to read input"); + fatal("Internal error in server"); } } p += data; *(p++) = '\0'; data = (p - combuf); memcpy(combuf, &data, sizeof(data)); - gw_log (GW_LOG_DEBUG, prog, "Writing data."); + gw_log (GW_LOG_DEBUG, prog, "Writing data"); if (write(lineout, combuf, data) < data) { gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "write"); - fatal("Internal server error."); + fatal("Internal server error"); } if (linein < 0 && (linein = open(serverp, O_RDONLY)) < 0) { - gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "open server %s", serverp); - fatal("Internal error in server."); + gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "open %s", serverp); + fatal("Internal error in server"); } - gw_log (GW_LOG_DEBUG, prog, "Reading response."); + gw_log (GW_LOG_DEBUG, prog, "Reading response"); #if 0 while ((data = read(linein, combuf, COMBUF)) > 0) @@ -349,8 +352,18 @@ int main() break; if (r > 0 && FD_ISSET (1, &s_input)) { - gw_log (GW_LOG_DEBUG, prog, "stdout closed"); - break; + data = read (1, combuf, COMBUF); + if (data == -1) + { + gw_log (GW_LOG_DEBUG|GW_LOG_ERRNO, prog, "stdout closed"); + break; + } + if (data == 0) + { + gw_log (GW_LOG_DEBUG, prog, "stdout closed"); + break; + } + gw_log (GW_LOG_DEBUG, prog, "stdout got %d bytes", data); } } #endif