mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
The gzip decompression simplification. gzclearerr does the job.
This commit is contained in:
parent
c187df9a0a
commit
fe4d44414d
@ -1027,30 +1027,17 @@ decompress_data(struct connection *conn, unsigned char *data, int len,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == FINISHING) {
|
|
||||||
/* state is FINISHING. Set to_read to some nice, big
|
|
||||||
* value to empty the encoded output queue by reading
|
|
||||||
* big chunks from it. */
|
|
||||||
to_read = BIG_READ;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!conn->stream) {
|
if (!conn->stream) {
|
||||||
conn->stream = open_encoded(conn->stream_pipes[0],
|
conn->stream = open_encoded(conn->stream_pipes[0],
|
||||||
conn->content_encoding);
|
conn->content_encoding);
|
||||||
if (!conn->stream) return NULL;
|
if (!conn->stream) return NULL;
|
||||||
/* On "startup" pipe is treated with care, but if everything
|
|
||||||
* was already written to the pipe, caution isn't necessary */
|
|
||||||
if (state != FINISHING) {
|
|
||||||
/* on init don't read too much */
|
|
||||||
to_read = PIPE_BUF / 32;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
output = (unsigned char *) mem_realloc(output, *new_len + to_read);
|
output = (unsigned char *) mem_realloc(output, *new_len + BIG_READ);
|
||||||
if (!output) break;
|
if (!output) break;
|
||||||
|
|
||||||
did_read = read_encoded(conn->stream, output + *new_len,
|
did_read = read_encoded(conn->stream, output + *new_len, BIG_READ);
|
||||||
to_read);
|
|
||||||
if (did_read > 0) *new_len += did_read;
|
if (did_read > 0) *new_len += did_read;
|
||||||
else if (did_read == -1) {
|
else if (did_read == -1) {
|
||||||
mem_free_set(&output, NULL);
|
mem_free_set(&output, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user