lbarnaud                Wed Sep 17 17:22:07 2008 UTC

  Modified files:              
    /php-src/ext/session        php_session.h session.c 
  Log:
  Added ability to cancel upload in rfc1867 handler
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/session/php_session.h?r1=1.117&r2=1.118&diff_format=u
Index: php-src/ext/session/php_session.h
diff -u php-src/ext/session/php_session.h:1.117 
php-src/ext/session/php_session.h:1.118
--- php-src/ext/session/php_session.h:1.117     Thu Sep 11 11:51:07 2008
+++ php-src/ext/session/php_session.h   Wed Sep 17 17:22:06 2008
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_session.h,v 1.117 2008/09/11 11:51:07 lbarnaud Exp $ */
+/* $Id: php_session.h,v 1.118 2008/09/17 17:22:06 lbarnaud Exp $ */
 
 #ifndef PHP_SESSION_H
 #define PHP_SESSION_H
@@ -110,6 +110,7 @@
        zval      *current_file;
        zval      *current_file_bytes_processed;
        zend_bool apply_trans_sid;
+       zend_bool cancel_upload;
 } php_session_rfc1867_progress;
 
 typedef struct _php_ps_globals {
http://cvs.php.net/viewvc.cgi/php-src/ext/session/session.c?r1=1.493&r2=1.494&diff_format=u
Index: php-src/ext/session/session.c
diff -u php-src/ext/session/session.c:1.493 php-src/ext/session/session.c:1.494
--- php-src/ext/session/session.c:1.493 Thu Sep 11 11:51:07 2008
+++ php-src/ext/session/session.c       Wed Sep 17 17:22:07 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: session.c,v 1.493 2008/09/11 11:51:07 lbarnaud Exp $ */
+/* $Id: session.c,v 1.494 2008/09/17 17:22:07 lbarnaud Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2152,9 +2152,23 @@
 
 static inline void php_session_rfc1867_update(php_session_rfc1867_progress 
*progress TSRMLS_DC) /* {{{ */
 {
+       zval **progress_ary, **cancel_upload;
        php_session_initialize(TSRMLS_C);
        PS(session_status) = php_session_active;
        IF_SESSION_VARS() {
+               while (!progress->cancel_upload) {
+                       if 
(zend_u_symtable_find(Z_ARRVAL_P(PS(http_session_vars)), Z_TYPE(progress->key), 
Z_UNIVAL(progress->key), Z_UNILEN(progress->key)+1, (void**)&progress_ary) != 
SUCCESS) {
+                               break;
+                       }
+                       if (Z_TYPE_PP(progress_ary) != IS_ARRAY) {
+                               break;
+                       }
+                       if (zend_ascii_hash_find(Z_ARRVAL_PP(progress_ary), 
"cancel_upload", sizeof("cancel_upload"), (void**)&cancel_upload) != SUCCESS) {
+                               break;
+                       }
+                       progress->cancel_upload = zend_is_true(*cancel_upload);
+                       break;
+               }
                Z_ADDREF_P(progress->data);
                zend_u_symtable_update(Z_ARRVAL_P(PS(http_session_vars)), 
Z_TYPE(progress->key), Z_UNIVAL(progress->key), Z_UNILEN(progress->key)+1, 
&progress->data, sizeof(zval *), NULL);
        }
@@ -2347,10 +2361,15 @@
                                zval_ptr_dtor(&progress->data);
                        }
                        efree(progress);
+                       progress = NULL;
+                       PS(rfc1867_progress) = NULL;
                }
                break;
        }
 
+       if (progress && progress->cancel_upload) {
+               return FAILURE;
+       }
        return retval;
 
 } /* }}} */



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

Reply via email to