svn: /pecl/apc/trunk/ apc_globals.h apc_rfc1867.c

From: 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;

« previous php.pecl.cvs (#14428) next »