diff --git a/src/mod_deflate.c b/src/mod_deflate.c index 2d7c3b6c..a8cf7727 100644 --- a/src/mod_deflate.c +++ b/src/mod_deflate.c @@ -968,7 +968,11 @@ static int stream_zstd_init(handler_ctx *hctx) { const plugin_data * const p = hctx->plugin_data; if (p->conf.compression_level >= 0) { /* -1 is lighttpd default for "unset" */ int level = p->conf.compression_level; + #if ZSTD_VERSION_NUMBER >= 10000+400+0 /* v1.4.0 */ ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, level); + #else + ZSTD_initCStream(cctx, level); + #endif } return 0; } @@ -982,7 +986,11 @@ static int stream_zstd_compress(handler_ctx * const hctx, unsigned char * const hctx->output->used = 0; hctx->bytes_in += st_size; while (zib.pos < zib.size) { + #if ZSTD_VERSION_NUMBER >= 10000+400+0 /* v1.4.0 */ const size_t rv = ZSTD_compressStream2(cctx,&zob,&zib,ZSTD_e_continue); + #else + const size_t rv = ZSTD_compressStream(cctx, &zob, &zib); + #endif if (ZSTD_isError(rv)) return -1; if (zib.pos == zib.size) break; /* defer flush */ hctx->bytes_out += (off_t)zob.pos; @@ -996,14 +1004,22 @@ static int stream_zstd_compress(handler_ctx * const hctx, unsigned char * const static int stream_zstd_flush(handler_ctx * const hctx, int end) { ZSTD_CStream * const cctx = hctx->u.cctx; + #if ZSTD_VERSION_NUMBER >= 10000+400+0 /* v1.4.0 */ const ZSTD_EndDirective endOp = end ? ZSTD_e_end : ZSTD_e_flush; ZSTD_inBuffer zib = { NULL, 0, 0 }; + #endif ZSTD_outBuffer zob = { hctx->output->ptr, hctx->output->size, hctx->output->used }; size_t rv; do { + #if ZSTD_VERSION_NUMBER >= 10000+400+0 /* v1.4.0 */ rv = ZSTD_compressStream2(cctx, &zob, &zib, endOp); + #else + rv = end + ? ZSTD_endStream(cctx, &zob) + : ZSTD_flushStream(cctx, &zob); + #endif if (ZSTD_isError(rv)) return -1; hctx->bytes_out += (off_t)zob.pos; if (0 != stream_http_chunk_append_mem(hctx, zob.dst, zob.pos))