EOF in zlib 1.2.5 seems to be sticky. When we're tailing a file and we

reach EOF, zlib's file handle seems to stay at EOF even when more data
is appended to the file. Add a check for 1.2.5 which calls gzseek in
order to unset EOF. Fixes bugs 4708 and 4748.

svn path=/trunk/; revision=32715
This commit is contained in:
Gerald Combs 2010-05-07 19:45:47 +00:00
parent 077ff72ac1
commit 52cbbd605f
1 changed files with 12 additions and 0 deletions

View File

@ -35,6 +35,10 @@
#include <unistd.h>
#endif
#ifdef HAVE_LIBZ
#include <zlib.h>
#endif
#include "wtap-int.h"
#include "wtap.h"
@ -646,6 +650,14 @@ wtap_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset)
*/
wth->phdr.pkt_encap = wth->file_encap;
#if defined(ZLIB_VERNUM) && ZLIB_VERNUM == 0x1250
/* Reset EOF */
/* g_log(NULL, G_LOG_LEVEL_DEBUG, "wtap_read: eof before seek: %d", gzeof(wth->fh)); */
if (gzeof(wth->fh))
gzseek(wth->fh, 0, SEEK_CUR);
/* g_log(NULL, G_LOG_LEVEL_DEBUG, "wtap_read: eof after seek: %d", gzeof(wth->fh)); */
#endif
if (!wth->subtype_read(wth, err, err_info, data_offset))
return FALSE; /* failure */