@@ -62,18 +62,7 @@ namespace compress_ns
6262DbgCtl dbg_ctl{TAG};
6363}
6464
65- const int ZLIB_COMPRESSION_LEVEL = 6 ;
66- const char *dictionary = nullptr ;
67-
68- // brotli compression quality 1-11. Testing proved level '6'
69- #if HAVE_BROTLI_ENCODE_H
70- const int BROTLI_COMPRESSION_LEVEL = 6 ;
71- const int BROTLI_LGW = 16 ;
72- #endif
73-
74- #if HAVE_ZSTD_H
75- const int ZSTD_COMPRESSION_LEVEL = 12 ;
76- #endif
65+ const char *dictionary = nullptr ;
7766
7867static const char *global_hidden_header_name = nullptr ;
7968
@@ -90,7 +79,7 @@ static void zstd_compress_finish(Data *data);
9079static void zstd_compress_one (Data *data, const char *upstream_buffer, int64_t upstream_length);
9180#endif
9281static Data *
93- data_alloc (int compression_type, int compression_algorithms)
82+ data_alloc (int compression_type, int compression_algorithms, HostConfiguration *hc )
9483{
9584 Data *data;
9685 int err;
@@ -103,6 +92,7 @@ data_alloc(int compression_type, int compression_algorithms)
10392 data->state = transform_state_initialized;
10493 data->compression_type = compression_type;
10594 data->compression_algorithms = compression_algorithms;
95+ data->hc = hc;
10696 data->zstrm .next_in = Z_NULL;
10797 data->zstrm .avail_in = 0 ;
10898 data->zstrm .total_in = 0 ;
@@ -119,7 +109,7 @@ data_alloc(int compression_type, int compression_algorithms)
119109 window_bits = WINDOW_BITS_DEFLATE;
120110 }
121111
122- err = deflateInit2 (&data->zstrm , ZLIB_COMPRESSION_LEVEL , Z_DEFLATED, window_bits, ZLIB_MEMLEVEL, Z_DEFAULT_STRATEGY);
112+ err = deflateInit2 (&data->zstrm , data-> hc -> zlib_compression_level () , Z_DEFLATED, window_bits, ZLIB_MEMLEVEL, Z_DEFAULT_STRATEGY);
123113
124114 if (err != Z_OK) {
125115 fatal (" gzip-transform: ERROR: deflateInit (%d)!" , err);
@@ -139,8 +129,8 @@ data_alloc(int compression_type, int compression_algorithms)
139129 if (!data->bstrm .br ) {
140130 fatal (" Brotli Encoder Instance Failed" );
141131 }
142- BrotliEncoderSetParameter (data->bstrm .br , BROTLI_PARAM_QUALITY, BROTLI_COMPRESSION_LEVEL );
143- BrotliEncoderSetParameter (data->bstrm .br , BROTLI_PARAM_LGWIN, BROTLI_LGW );
132+ BrotliEncoderSetParameter (data->bstrm .br , BROTLI_PARAM_QUALITY, data-> hc -> brotli_compression_level () );
133+ BrotliEncoderSetParameter (data->bstrm .br , BROTLI_PARAM_LGWIN, data-> hc -> brotli_lgw_size () );
144134 data->bstrm .next_in = nullptr ;
145135 data->bstrm .avail_in = 0 ;
146136 data->bstrm .total_in = 0 ;
@@ -462,7 +452,7 @@ zstd_compress_init(Data *data)
462452 }
463453
464454 // Set compression level
465- size_t result = ZSTD_CCtx_setParameter (data->zstrm_zstd .cctx , ZSTD_c_compressionLevel, ZSTD_COMPRESSION_LEVEL );
455+ size_t result = ZSTD_CCtx_setParameter (data->zstrm_zstd .cctx , ZSTD_c_compressionLevel, data-> hc -> zstd_compression_level () );
466456 if (ZSTD_isError (result)) {
467457 error (" Failed to set Zstd compression level: %s" , ZSTD_getErrorName (result));
468458 return ;
@@ -475,7 +465,7 @@ zstd_compress_init(Data *data)
475465 return ;
476466 }
477467
478- debug (" zstd compression context initialized with level %d" , ZSTD_COMPRESSION_LEVEL );
468+ debug (" zstd compression context initialized with level %d" , data-> hc -> zstd_compression_level () );
479469}
480470
481471static void
@@ -981,9 +971,8 @@ compress_transform_add(TSHttpTxn txnp, HostConfiguration *hc, int compress_type,
981971 }
982972
983973 connp = TSTransformCreate (compress_transform, txnp);
984- data = data_alloc (compress_type, algorithms);
974+ data = data_alloc (compress_type, algorithms, hc );
985975 data->txn = txnp;
986- data->hc = hc;
987976
988977 TSContDataSet (connp, data);
989978 TSHttpTxnHookAdd (txnp, TS_HTTP_RESPONSE_TRANSFORM_HOOK, connp);
0 commit comments