(build) make using zlib optional, with the caveat that some http and websocket features are not available when zlib is absent

This commit is contained in:
Benjamin Sergeant
2020-07-31 22:54:57 -07:00
parent 2e3d625c1e
commit 6f0307fb35
13 changed files with 85 additions and 11 deletions

View File

@ -13,7 +13,10 @@
#include <fstream>
#include <sstream>
#include <vector>
#ifdef IXWEBSOCKET_USE_ZLIB
#include <zlib.h>
#endif
namespace
{
@ -41,6 +44,7 @@ namespace
return std::make_pair(res.first, std::string(vec.begin(), vec.end()));
}
#ifdef IXWEBSOCKET_USE_ZLIB
std::string gzipCompress(const std::string& str)
{
z_stream zs; // z_stream is zlib's control structure
@ -83,6 +87,7 @@ namespace
return outstring;
}
#endif
} // namespace
namespace ix
@ -168,12 +173,14 @@ namespace ix
std::string content = res.second;
#ifdef IXWEBSOCKET_USE_ZLIB
std::string acceptEncoding = request->headers["Accept-encoding"];
if (acceptEncoding == "*" || acceptEncoding.find("gzip") != std::string::npos)
{
content = gzipCompress(content);
headers["Content-Encoding"] = "gzip";
}
#endif
// Log request
std::stringstream ss;