mirror of
https://github.com/tstack/lnav
synced 2024-11-17 15:29:40 +00:00
Merge pull request #785 from phord/gzip-eos
Don't try to read concatenated gzip streams
This commit is contained in:
commit
4b30dffd6b
@ -152,27 +152,9 @@ void line_buffer::gz_indexed::init_stream()
|
||||
this->strm.avail_out = 0;
|
||||
int rc = inflateInit2(&strm, GZ_HEADER_MODE);
|
||||
if (rc != Z_OK) {
|
||||
throw(rc); // FIXME: exception wrapper
|
||||
log_error(" inflateInit2: %d %s", (int)rc, this->strm.msg ? this->strm.msg : "");
|
||||
}
|
||||
}
|
||||
|
||||
void line_buffer::gz_indexed::continue_stream()
|
||||
{
|
||||
// Save our position and output buffer
|
||||
auto total_in = this->strm.total_in;
|
||||
auto total_out = this->strm.total_out;
|
||||
auto avail_out = this->strm.avail_out;
|
||||
auto next_out = this->strm.next_out;
|
||||
|
||||
init_stream();
|
||||
|
||||
// Restore position and output buffer
|
||||
this->strm.total_in = total_in;
|
||||
this->strm.total_out = total_out;
|
||||
this->strm.avail_out = avail_out;
|
||||
this->strm.next_out = next_out;
|
||||
}
|
||||
|
||||
void line_buffer::gz_indexed::open(int fd)
|
||||
{
|
||||
this->close();
|
||||
@ -204,11 +186,10 @@ int line_buffer::gz_indexed::stream_data(void * buf, size_t size)
|
||||
? Z_SYNC_FLUSH : Z_BLOCK;
|
||||
auto err = inflate(&this->strm, flush);
|
||||
if (err == Z_STREAM_END) {
|
||||
// Reached end of stream; re-init for a possible subsequent stream
|
||||
continue_stream();
|
||||
break;
|
||||
} else if (err != Z_OK) {
|
||||
log_error(" inflate-error: %d", (int)err);
|
||||
throw error(err); // FIXME: exception wrapper
|
||||
log_error(" inflate-error: %d %s", (int)err, this->strm.msg ? this->strm.msg : "");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (this->strm.total_in >= last + SYNCPOINT_SIZE &&
|
||||
|
@ -104,7 +104,6 @@ public:
|
||||
|
||||
void close();
|
||||
void init_stream();
|
||||
void continue_stream();
|
||||
void open(int fd);
|
||||
int stream_data(void * buf, size_t size);
|
||||
void seek(off_t offset);
|
||||
|
Loading…
Reference in New Issue
Block a user