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