不能使用`deflateInit`来压缩修改后的数据

时间:2015-02-06 19:41:45

标签: c++ http zlib winsock-lsp

我正在开发一个监控HTTP流量的LSP,并修改每个网页的源HTML代码。为了修改分块的HTTP响应,我使用zlibinflate并使用以下主代码成功解压缩数据:

r = inflateInit2(&z, 16 + MAX_WBITS);
...
r = inflate(&z, 0);

现在,在修改之后,我想使用完全相同的方法重新压缩数据,所以我使用以下代码行但它返回-2。

r = deflateInit(&o, 16 + MAX_WBITS);

如果我更改16+MAX_WBITS,则返回SUCCESS,但它不是同一种方法,并在deflate后返回无效回复。

我如何实现目标?

1 个答案:

答案 0 :(得分:1)

您需要使用deflateInit2()。第四个参数是16 + MAX_WBITS。请阅读zlib.h

中的文档