ssh.com 3.2.0 uses zlib sync flush (start and close an empty

uncompressed block at the end of each compressed packet) which we
were embarrassingly unable to deal with because we assumed every
uncompressed block contained at least one byte. Particularly silly
because I _knew_ about the existence of sync flush when I coded this
module. Arrgh. Still, now fixed.

[originally from svn r1824]
This commit is contained in:
Simon Tatham 2002-08-08 17:03:58 +00:00
Родитель 4abd468e14
Коммит e8ab511442
1 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -1164,7 +1164,10 @@ int zlib_decompress_block(unsigned char *block, int len,
goto finished; goto finished;
nlen = dctx.bits & 0xFFFF; nlen = dctx.bits & 0xFFFF;
EATBITS(16); EATBITS(16);
dctx.state = UNCOMP_DATA; if (dctx.uncomplen == 0)
dctx.state = OUTSIDEBLK; /* block is empty */
else
dctx.state = UNCOMP_DATA;
break; break;
case UNCOMP_DATA: case UNCOMP_DATA:
if (dctx.nbits < 8) if (dctx.nbits < 8)