You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-cvs@httpd.apache.org by jo...@apache.org on 2007/04/22 23:00:26 UTC
svn commit: r531273 - in /httpd/apreq/branches/1.x: Changes
c/apache_multipart_buffer.c
Author: joes
Date: Sun Apr 22 14:00:25 2007
New Revision: 531273
URL: http://svn.apache.org/viewvc?view=rev&rev=531273
Log:
have fill_buffer() completely fill the multipart_buffer. This
bug is tickled by the FireFox 2.0 when doing ssl uploads:
https://bugzilla.mozilla.org/show_bug.cgi?id=356470
https://bugzilla.mozilla.org/show_bug.cgi?id=369414
Modified:
httpd/apreq/branches/1.x/Changes
httpd/apreq/branches/1.x/c/apache_multipart_buffer.c
Modified: httpd/apreq/branches/1.x/Changes
URL: http://svn.apache.org/viewvc/httpd/apreq/branches/1.x/Changes?view=diff&rev=531273&r1=531272&r2=531273
==============================================================================
--- httpd/apreq/branches/1.x/Changes (original)
+++ httpd/apreq/branches/1.x/Changes Sun Apr 22 14:00:25 2007
@@ -4,10 +4,15 @@
=item 1.34
+have fill_buffer() completely fill the multipart_buffer. This
+bug is tickled by the FireFox 2.0 when doing ssl uploads:
+
+ https://bugzilla.mozilla.org/show_bug.cgi?id=356470
+ https://bugzilla.mozilla.org/show_bug.cgi?id=369414
+
move the mod_perl version detection to the top of Makefile.PL, so
Apache-Test and other things won't fool around with %INC and confuse
the detection code. [Stas]
-
=item 1.33 - December 15, 2004
Modified: httpd/apreq/branches/1.x/c/apache_multipart_buffer.c
URL: http://svn.apache.org/viewvc/httpd/apreq/branches/1.x/c/apache_multipart_buffer.c?view=diff&rev=531273&r1=531272&r2=531273
==============================================================================
--- httpd/apreq/branches/1.x/c/apache_multipart_buffer.c (original)
+++ httpd/apreq/branches/1.x/c/apache_multipart_buffer.c Sun Apr 22 14:00:25 2007
@@ -52,7 +52,7 @@
*/
int fill_buffer(multipart_buffer *self)
{
- int bytes_to_read, actual_read = 0;
+ int bytes_to_read, actual_read = 0, total_read = 0;
/* shift the existing data if necessary */
if(self->bytes_in_buffer > 0 && self->buf_begin != self->buffer)
@@ -70,18 +70,24 @@
}
/* read the required number of bytes */
- if(bytes_to_read > 0) {
+ while(bytes_to_read > 0) {
char *buf = self->buffer + self->bytes_in_buffer;
ap_hard_timeout("[libapreq] multipart_buffer.c:fill_buffer", self->r);
actual_read = ap_get_client_block(self->r, buf, bytes_to_read);
ap_kill_timeout(self->r);
/* update the buffer length */
- if(actual_read > 0)
- self->bytes_in_buffer += actual_read;
+ if(actual_read > 0) {
+ self->bytes_in_buffer += actual_read;
+ bytes_to_read -= actual_read;
+ total_read += actual_read;
+ }
+ else {
+ break;
+ }
}
- return actual_read;
+ return total_read;
}
/*