input/curl: don't abort if a packet has only metadata

When a received chunk of data has only icy-metadata, there was no
usable data left for input_curl_read() to return, and thus it returned
0 bytes.  "0" however is a special value for "end of file" or
"error".  This patch makes input_curl_read() read more data from the
socket, until the read request can be fulfilled (or until there's
really EOF).
This commit is contained in:
Max Kellermann 2009-10-11 23:13:49 +02:00
parent 016558093b
commit af92b1c2d8
2 changed files with 24 additions and 20 deletions

2
NEWS
View File

@ -1,4 +1,6 @@
ver 0.15.5 (2009/??/??)
* input:
- curl: don't abort if a packet has only metadata
ver 0.15.4 (2009/10/03)

View File

@ -443,6 +443,7 @@ input_curl_read(struct input_stream *is, void *ptr, size_t size)
}
#endif
do {
/* fill the buffer */
success = fill_buffer(is);
@ -468,6 +469,7 @@ input_curl_read(struct input_stream *is, void *ptr, size_t size)
nbytes += copy;
size -= copy;
}
} while (nbytes == 0);
if (icy_defined(&c->icy_metadata))
copy_icy_tag(c);