From c0be56a8446b57f53f5eb9e7e840ffcb48835c4f Mon Sep 17 00:00:00 2001 From: kjdev Date: Fri, 15 Aug 2025 12:15:39 +0900 Subject: [PATCH 1/2] fix: disable dcb encoding when dictionary loading fails --- brotli.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/brotli.c b/brotli.c index 7b01007..6ed21ba 100644 --- a/brotli.c +++ b/brotli.c @@ -376,6 +376,7 @@ static zend_string *php_brotli_output_handler_load_dict(php_brotli_context *ctx) { char *file = BROTLI_G(output_compression_dict); if (!file || strlen(file) == 0) { + BROTLI_G(compression_coding) &= ~PHP_BROTLI_ENCODING_DCB; return NULL; } @@ -392,6 +393,7 @@ static zend_string *php_brotli_output_handler_load_dict(php_brotli_context *ctx) if (!stream) { php_error_docref(NULL, E_WARNING, "brotli: failed to load dictionary"); + BROTLI_G(compression_coding) &= ~PHP_BROTLI_ENCODING_DCB; return NULL; } @@ -417,6 +419,7 @@ static zend_string *php_brotli_output_handler_load_dict(php_brotli_context *ctx) php_stream_close(stream); if (!dict) { + BROTLI_G(compression_coding) &= ~PHP_BROTLI_ENCODING_DCB; return NULL; } From 5cde633428bcc3060c6c68637601a0ce8dc38f0b Mon Sep 17 00:00:00 2001 From: kjdev Date: Fri, 15 Aug 2025 12:15:56 +0900 Subject: [PATCH 2/2] test: add dcb output handler when dictionary loading fails --- tests/ob_dcb_005.phpt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 tests/ob_dcb_005.phpt diff --git a/tests/ob_dcb_005.phpt b/tests/ob_dcb_005.phpt new file mode 100644 index 0000000..f763c6b --- /dev/null +++ b/tests/ob_dcb_005.phpt @@ -0,0 +1,26 @@ +--TEST-- +output handler: br,dcb: invalid output_compression_dict +--SKIPIF-- + +--GET-- +ob=dictionary +--ENV-- +HTTP_ACCEPT_ENCODING=br,dcb +HTTP_AVAILABLE_DICTIONARY=:4SycXHyLhvKPL/nNaYXl60myMwris2L4X1O+q5tW1XE=: +--FILE-- + +--EXPECT_EXTERNAL-- +files/ob_data.br +--EXPECTHEADERS-- +Content-Encoding: br +Vary: Accept-Encoding