dmitry Tue Aug 26 09:56:23 2008 UTC
Modified files:
/php-src/sapi/cgi cgi_main.c fastcgi.c fastcgi.h
Log:
Fixed bug #45786 (FastCGI process exited unexpectedly)
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.362&r2=1.363&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.362 php-src/sapi/cgi/cgi_main.c:1.363
--- php-src/sapi/cgi/cgi_main.c:1.362 Mon Aug 18 10:48:49 2008
+++ php-src/sapi/cgi/cgi_main.c Tue Aug 26 09:56:22 2008
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cgi_main.c,v 1.362 2008/08/18 10:48:49 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.363 2008/08/26 09:56:22 dmitry Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -774,7 +774,7 @@
#ifndef PHP_WIN32
!parent &&
#endif
-
!fcgi_finish_request((fcgi_request*)SG(server_context))) {
+
!fcgi_finish_request((fcgi_request*)SG(server_context), 0)) {
php_handle_aborted_connection();
}
} else {
@@ -1921,7 +1921,7 @@
get path_translated */
if (php_request_startup(TSRMLS_C) == FAILURE) {
if (fastcgi) {
- fcgi_finish_request(&request);
+ fcgi_finish_request(&request, 1);
}
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
@@ -2064,7 +2064,7 @@
/* only fastcgi will get here */
requests++;
if (max_requests && (requests == max_requests)) {
- fcgi_finish_request(&request);
+ fcgi_finish_request(&request, 1);
if (bindpath) {
free(bindpath);
}
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/fastcgi.c?r1=1.47&r2=1.48&diff_format=u
Index: php-src/sapi/cgi/fastcgi.c
diff -u php-src/sapi/cgi/fastcgi.c:1.47 php-src/sapi/cgi/fastcgi.c:1.48
--- php-src/sapi/cgi/fastcgi.c:1.47 Mon Aug 18 10:48:49 2008
+++ php-src/sapi/cgi/fastcgi.c Tue Aug 26 09:56:22 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fastcgi.c,v 1.47 2008/08/18 10:48:49 dmitry Exp $ */
+/* $Id: fastcgi.c,v 1.48 2008/08/26 09:56:22 dmitry Exp $ */
#include "php.h"
#include "fastcgi.h"
@@ -662,6 +662,7 @@
unsigned char buf[FCGI_MAX_LENGTH+8];
req->keep = 0;
+ req->closed = 0;
req->in_len = 0;
req->out_hdr = NULL;
req->out_pos = req->out_buf;
@@ -886,7 +887,6 @@
HANDLE pipe;
OVERLAPPED ov;
#endif
- fcgi_finish_request(req);
while (1) {
if (req->fd < 0) {
@@ -1177,13 +1177,16 @@
return len;
}
-int fcgi_finish_request(fcgi_request *req)
+int fcgi_finish_request(fcgi_request *req, int force_close)
{
int ret = 1;
if (req->fd >= 0) {
- ret = fcgi_flush(req, 1);
- fcgi_close(req, 0, 1);
+ if (!req->closed) {
+ ret = fcgi_flush(req, 1);
+ req->closed = 1;
+ }
+ fcgi_close(req, force_close, 1);
}
return ret;
}
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/fastcgi.h?r1=1.11&r2=1.12&diff_format=u
Index: php-src/sapi/cgi/fastcgi.h
diff -u php-src/sapi/cgi/fastcgi.h:1.11 php-src/sapi/cgi/fastcgi.h:1.12
--- php-src/sapi/cgi/fastcgi.h:1.11 Mon Aug 18 10:48:49 2008
+++ php-src/sapi/cgi/fastcgi.h Tue Aug 26 09:56:22 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: fastcgi.h,v 1.11 2008/08/18 10:48:49 dmitry Exp $ */
+/* $Id: fastcgi.h,v 1.12 2008/08/26 09:56:22 dmitry Exp $ */
/* FastCGI protocol */
@@ -99,6 +99,7 @@
int fd;
int id;
int keep;
+ int closed;
int in_len;
int in_pad;
@@ -118,7 +119,7 @@
int fcgi_listen(const char *path, int backlog);
void fcgi_init_request(fcgi_request *req, int listen_socket);
int fcgi_accept_request(fcgi_request *req);
-int fcgi_finish_request(fcgi_request *req);
+int fcgi_finish_request(fcgi_request *req, int force_close);
char* fcgi_getenv(fcgi_request *req, const char* var, int var_len);
char* fcgi_putenv(fcgi_request *req, char* var, int var_len, char* val);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php