cvs: php4 /main rfc1867.c

From: Date: Wed, 05 Jun 2002 13:35:36 +0000
Subject: cvs: php4 /main rfc1867.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-12232@lists.php.net to get a copy of this message
sesser Wed Jun 5 09:35:36 2002 EDT Modified files: /php4/main rfc1867.c Log: fixed multiline header detection (':' is valid within following lines) fixed fill_buffer to fill the buffer always completely Index: php4/main/rfc1867.c diff -u php4/main/rfc1867.c:1.101 php4/main/rfc1867.c:1.102 --- php4/main/rfc1867.c:1.101 Wed Jun 5 07:28:33 2002 +++ php4/main/rfc1867.c Wed Jun 5 09:35:34 2002 @@ -16,7 +16,7 @@ | Jani Taskinen <sniper@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: rfc1867.c,v 1.101 2002/06/05 11:28:33 sesser Exp $ */ +/* $Id: rfc1867.c,v 1.102 2002/06/05 13:35:34 sesser Exp $ */ /* * This product includes software developed by the Apache Group @@ -158,7 +158,7 @@ */ static int fill_buffer(multipart_buffer *self TSRMLS_DC) { - int bytes_to_read, actual_read = 0; + int bytes_to_read, total_read = 0, actual_read = 0; /* shift the existing data if necessary */ if (self->bytes_in_buffer > 0 && self->buf_begin != self->buffer) { @@ -171,7 +171,7 @@ bytes_to_read = self->bufsize - self->bytes_in_buffer; /* read the required number of bytes */ - if (bytes_to_read > 0) { + while (bytes_to_read > 0) { char *buf = self->buffer + self->bytes_in_buffer; @@ -181,10 +181,14 @@ if (actual_read > 0) { self->bytes_in_buffer += actual_read; SG(read_post_bytes) += actual_read; + total_read += actual_read; + bytes_to_read -= actual_read; + } else { + break; } } - return actual_read; + return total_read; } @@ -334,7 +338,12 @@ /* add header to table */ char *key = line; - char *value = strchr(line, ':'); + char *value = NULL; + + /* space in the beginning means same header */ + if (!isspace(line[0])) { + value = strchr(line, ':'); + } if (value) { *value = 0; @@ -343,7 +352,7 @@ entry.value = estrdup(value); entry.key = estrdup(key); - } else if (zend_llist_remove_tail(header)) { /* If no ':' on the line, add to previous line */ + } else if (header->count) { /* If no ':' on the line, add to previous line */ prev_len = strlen(prev_entry.value); cur_len = strlen(line); @@ -354,6 +363,8 @@ entry.value[cur_len + prev_len] = '\0'; entry.key = estrdup(prev_entry.key); + + zend_llist_remove_tail(header); } else { continue; }

« previous php.cvs (#12232) next »