dmitry          Fri Feb 15 14:51:53 2008 UTC

  Modified files:              
    /php-src/sapi/cgi   cgi_main.c fastcgi.c 
  Log:
  optimization
  
  
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.348&r2=1.349&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.348 php-src/sapi/cgi/cgi_main.c:1.349
--- php-src/sapi/cgi/cgi_main.c:1.348   Mon Dec 31 07:12:19 2007
+++ php-src/sapi/cgi/cgi_main.c Fri Feb 15 14:51:52 2008
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: cgi_main.c,v 1.348 2007/12/31 07:12:19 sebastian Exp $ */
+/* $Id: cgi_main.c,v 1.349 2008/02/15 14:51:52 dmitry Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -754,7 +754,17 @@
                2. When the first call occurs and the request is not set up, 
flush fails on FastCGI.
        */
        if (SG(sapi_started)) {
-               sapi_cgibin_flush(SG(server_context));
+               if (fcgi_is_fastcgi()) {
+                       if (
+#ifndef PHP_WIN32
+                               !parent &&
+#endif
+                               
!fcgi_finish_request((fcgi_request*)SG(server_context))) {
+                               php_handle_aborted_connection();
+                       }
+               } else {
+                       sapi_cgibin_flush(SG(server_context));
+               }
        }
        return SUCCESS;
 }
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/fastcgi.c?r1=1.43&r2=1.44&diff_format=u
Index: php-src/sapi/cgi/fastcgi.c
diff -u php-src/sapi/cgi/fastcgi.c:1.43 php-src/sapi/cgi/fastcgi.c:1.44
--- php-src/sapi/cgi/fastcgi.c:1.43     Mon Dec 31 07:12:19 2007
+++ php-src/sapi/cgi/fastcgi.c  Fri Feb 15 14:51:52 2008
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: fastcgi.c,v 1.43 2007/12/31 07:12:19 sebastian Exp $ */
+/* $Id: fastcgi.c,v 1.44 2008/02/15 14:51:52 dmitry Exp $ */
 
 #include "php.h"
 #include "fastcgi.h"
@@ -632,7 +632,7 @@
                }
                memcpy(tmp, p, name_len);
                tmp[name_len] = 0;
-               s = zend_strndup((char*)p + name_len, val_len);
+               s = estrndup((char*)p + name_len, val_len);
                zend_hash_update(&req->env, tmp, name_len+1, &s, sizeof(char*), 
NULL);
                p += name_len + val_len;
        }
@@ -644,7 +644,7 @@
 
 static void fcgi_free_var(char **s)
 {
-       free(*s);
+       efree(*s);
 }
 
 static int fcgi_read_request(fcgi_request *req)
@@ -657,7 +657,7 @@
        req->in_len = 0;
        req->out_hdr = NULL;
        req->out_pos = req->out_buf;
-       zend_hash_init(&req->env, 0, NULL, (void (*)(void *)) fcgi_free_var, 1);
+       zend_hash_init(&req->env, 0, NULL, (void (*)(void *)) fcgi_free_var, 0);
 
        if (safe_read(req, &hdr, sizeof(fcgi_header)) != sizeof(fcgi_header) ||
            hdr.version < FCGI_VERSION_1) {
@@ -693,15 +693,15 @@
                req->keep = (((fcgi_begin_request*)buf)->flags & 
FCGI_KEEP_CONN);
                switch ((((fcgi_begin_request*)buf)->roleB1 << 8) + 
((fcgi_begin_request*)buf)->roleB0) {
                        case FCGI_RESPONDER:
-                               val = strdup("RESPONDER");
+                               val = estrdup("RESPONDER");
                                zend_hash_update(&req->env, "FCGI_ROLE", 
sizeof("FCGI_ROLE"), &val, sizeof(char*), NULL);
                                break;
                        case FCGI_AUTHORIZER:
-                               val = strdup("AUTHORIZER");
+                               val = estrdup("AUTHORIZER");
                                zend_hash_update(&req->env, "FCGI_ROLE", 
sizeof("FCGI_ROLE"), &val, sizeof(char*), NULL);
                                break;
                        case FCGI_FILTER:
-                               val = strdup("FILTER");
+                               val = estrdup("FILTER");
                                zend_hash_update(&req->env, "FCGI_ROLE", 
sizeof("FCGI_ROLE"), &val, sizeof(char*), NULL);
                                break;
                        default:
@@ -1168,11 +1168,13 @@
 
 int fcgi_finish_request(fcgi_request *req)
 {
+       int ret = 1;
+
        if (req->fd >= 0) {
-               fcgi_flush(req, 1);
+               ret = fcgi_flush(req, 1);
                fcgi_close(req, 0, 1);
        }
-       return 1;
+       return ret;
 }
 
 char* fcgi_getenv(fcgi_request *req, const char* var, int var_len)
@@ -1195,7 +1197,7 @@
                } else {
                        char **ret;
 
-                       val = strdup(val);
+                       val = estrdup(val);
                        if (zend_hash_update(&req->env, var, var_len+1, &val, 
sizeof(char*), (void**)&ret) == SUCCESS) {
                                return *ret;
                        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to