svn: /pecl/apc/trunk/ apc_globals.h apc_rfc1867.c
| From: | Gopal Vijayaraghavan | Date: | Tue, 13 Jul 2010 12:23:35 +0000 |
| Subject: | svn: /pecl/apc/trunk/ apc_globals.h apc_rfc1867.c | ||
| Groups: | php.pecl.cvs | ||
| Request: | Send a blank email to pecl-cvs+get-14428@lists.php.net to get a copy of this message | ||
gopalv Tue, 13 Jul 2010 12:23:35 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=301232
Log:
Throw up a warning if APC_UPLOAD_PROGRESS is after the file upload entry.
Bug #13583 threw up this case as a common error.
Bug: http://pecl.php.net/bugs/13583 (unknown)
Changed paths:
U pecl/apc/trunk/apc_globals.h
U pecl/apc/trunk/apc_rfc1867.c
Modified: pecl/apc/trunk/apc_globals.h
===================================================================
--- pecl/apc/trunk/apc_globals.h 2010-07-13 06:50:24 UTC (rev 301231)
+++ pecl/apc/trunk/apc_globals.h 2010-07-13 12:23:35 UTC (rev 301232)
@@ -55,6 +55,7 @@
size_t prev_bytes_processed;
int update_freq;
double rate;
+ int started;
};
/* }}} */
Modified: pecl/apc/trunk/apc_rfc1867.c
===================================================================
--- pecl/apc/trunk/apc_rfc1867.c 2010-07-13 06:50:24 UTC (rev 301231)
+++ pecl/apc/trunk/apc_rfc1867.c 2010-07-13 12:23:35 UTC (rev 301232)
@@ -91,6 +91,7 @@
RFC1867_DATA(bytes_processed) = 0;
RFC1867_DATA(rate) = 0;
RFC1867_DATA(update_freq) = (int) APCG(rfc1867_freq);
+ RFC1867_DATA(started) = 0;
if(RFC1867_DATA(update_freq) < 0) { // frequency is a percentage, not bytes
RFC1867_DATA(update_freq) = (int) (RFC1867_DATA(content_length) *
APCG(rfc1867_freq) / 100);
@@ -103,8 +104,21 @@
int prefix_len = strlen(APCG(rfc1867_prefix));
multipart_event_formdata *data = (multipart_event_formdata *) event_data;
if(data->name && !strncasecmp(data->name, APCG(rfc1867_name),
strlen(APCG(rfc1867_name)))
- && data->value && data->length && data->length
< sizeof(RFC1867_DATA(tracking_key)) - prefix_len) {
+ && data->value && data->length) {
+
+ if(data->length >= sizeof(RFC1867_DATA(tracking_key)) - prefix_len) {
+ apc_wprint("Key too long for '%s'. Maximum size is
'%d' characters.",
+ APCG(rfc1867_name),
+ sizeof(RFC1867_DATA(tracking_key)) - prefix_len);
+ break;
+ }
+ if(RFC1867_DATA(started)) {
+ apc_wprint("Upload progress key '%s' should be before the
file upload entry in the form.",
+ APCG(rfc1867_name));
+ break;
+ }
+
strlcat(RFC1867_DATA(tracking_key), APCG(rfc1867_prefix), 63);
strlcat(RFC1867_DATA(tracking_key), *data->value, 63);
RFC1867_DATA(key_length) = data->length + prefix_len;
@@ -114,23 +128,26 @@
break;
case MULTIPART_EVENT_FILE_START:
- if(*RFC1867_DATA(tracking_key)) {
- multipart_event_file_start *data = (multipart_event_file_start *) event_data;
+ {
+ RFC1867_DATA(started) = 1;
+ if(*RFC1867_DATA(tracking_key)) {
+ multipart_event_file_start *data = (multipart_event_file_start *) event_data;
- RFC1867_DATA(bytes_processed) = data->post_bytes_processed;
- strncpy(RFC1867_DATA(filename),*data->filename,127);
- RFC1867_DATA(temp_filename) = NULL;
- strncpy(RFC1867_DATA(name),data->name,63);
- ALLOC_INIT_ZVAL(track);
- array_init(track);
- add_assoc_long(track, "total", RFC1867_DATA(content_length));
- add_assoc_long(track, "current", RFC1867_DATA(bytes_processed));
- add_assoc_string(track, "filename", RFC1867_DATA(filename), 1);
- add_assoc_string(track, "name", RFC1867_DATA(name), 1);
- add_assoc_long(track, "done", 0);
- add_assoc_double(track, "start_time", RFC1867_DATA(start_time));
- _apc_store(RFC1867_DATA(tracking_key), RFC1867_DATA(key_length), track,
APCG(rfc1867_ttl), 0 TSRMLS_CC);
- zval_ptr_dtor(&track);
+ RFC1867_DATA(bytes_processed) = data->post_bytes_processed;
+ strncpy(RFC1867_DATA(filename),*data->filename,127);
+ RFC1867_DATA(temp_filename) = NULL;
+ strncpy(RFC1867_DATA(name),data->name,63);
+ ALLOC_INIT_ZVAL(track);
+ array_init(track);
+ add_assoc_long(track, "total", RFC1867_DATA(content_length));
+ add_assoc_long(track, "current", RFC1867_DATA(bytes_processed));
+ add_assoc_string(track, "filename", RFC1867_DATA(filename), 1);
+ add_assoc_string(track, "name", RFC1867_DATA(name), 1);
+ add_assoc_long(track, "done", 0);
+ add_assoc_double(track, "start_time", RFC1867_DATA(start_time));
+ _apc_store(RFC1867_DATA(tracking_key), RFC1867_DATA(key_length), track,
APCG(rfc1867_ttl), 0 TSRMLS_CC);
+ zval_ptr_dtor(&track);
+ }
}
break;