Brotli: migrate to C API.
Change-Id: Ic1884b068bcb87d85396d22ee1e5a7dd2e3d39d9
Signed-off-by: Piotr Sikora <piotrsikora@google.com>
Reviewed-on: https://nginx-review.googlesource.com/1232
Reviewed-by: Martin Maly <mmaly@google.com>
diff --git a/BUILD b/BUILD
index 8ce09fa..b55f224 100644
--- a/BUILD
+++ b/BUILD
@@ -26,7 +26,7 @@
exports_files(["LICENSE"])
-load("//:build.bzl", "nginx_copts", "nginx_cxxopts")
+load("//:build.bzl", "nginx_copts")
genrule(
name = "ngx_modules_c",
@@ -42,11 +42,10 @@
cc_library(
name = "http_brotli_filter",
srcs = [
- "src/ngx_http_brotli_filter_module.cc",
+ "src/ngx_http_brotli_filter_module.c",
],
- copts = nginx_cxxopts,
+ copts = nginx_copts,
defines = [
- "NGX_HAVE_BROTLI_ENC_COMPRESSOR_H",
"NGX_HTTP_BROTLI_FILTER",
],
visibility = [
diff --git a/auto/feature b/auto/feature
deleted file mode 100644
index eede183..0000000
--- a/auto/feature
+++ /dev/null
@@ -1,131 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-echo $ngx_n "checking for $ngx_feature ...$ngx_c"
-
-cat << END >> $NGX_AUTOCONF_ERR
-
-----------------------------------------
-checking for $ngx_feature
-
-END
-
-ngx_found=no
-
-if test -n "$ngx_feature_name"; then
- ngx_have_feature=`echo $ngx_feature_name \
- | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
-fi
-
-if test -n "$ngx_feature_path"; then
- for ngx_temp in $ngx_feature_path; do
- ngx_feature_inc_path="$ngx_feature_inc_path -I $ngx_temp"
- done
-fi
-
-if [ "$ngx_feature_cpp" = "yes" ]; then
- NGX_AUTOTEST_EXT=cc
-else
- NGX_AUTOTEST_EXT=c
-fi
-
-cat << END > $NGX_AUTOTEST.$NGX_AUTOTEST_EXT
-
-#include <sys/types.h>
-$NGX_INCLUDE_UNISTD_H
-$ngx_feature_incs
-
-int main() {
- $ngx_feature_test;
- return 0;
-}
-
-END
-
-
-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
- -o $NGX_AUTOTEST $NGX_AUTOTEST.$NGX_AUTOTEST_EXT \
- $NGX_TEST_LD_OPT $ngx_feature_libs"
-
-ngx_feature_inc_path=
-ngx_feature_cpp=
-
-eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1"
-
-
-if [ -x $NGX_AUTOTEST ]; then
-
- case "$ngx_feature_run" in
-
- yes)
- # /bin/sh is used to intercept "Killed" or "Abort trap" messages
- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
- echo " found"
- ngx_found=yes
-
- if test -n "$ngx_feature_name"; then
- have=$ngx_have_feature . auto/have
- fi
-
- else
- echo " found but is not working"
- fi
- ;;
-
- value)
- # /bin/sh is used to intercept "Killed" or "Abort trap" messages
- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
- echo " found"
- ngx_found=yes
-
- cat << END >> $NGX_AUTO_CONFIG_H
-
-#ifndef $ngx_feature_name
-#define $ngx_feature_name `$NGX_AUTOTEST`
-#endif
-
-END
- else
- echo " found but is not working"
- fi
- ;;
-
- bug)
- # /bin/sh is used to intercept "Killed" or "Abort trap" messages
- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
- echo " not found"
-
- else
- echo " found"
- ngx_found=yes
-
- if test -n "$ngx_feature_name"; then
- have=$ngx_have_feature . auto/have
- fi
- fi
- ;;
-
- *)
- echo " found"
- ngx_found=yes
-
- if test -n "$ngx_feature_name"; then
- have=$ngx_have_feature . auto/have
- fi
- ;;
-
- esac
-
-else
- echo " not found"
-
- echo "----------" >> $NGX_AUTOCONF_ERR
- cat $NGX_AUTOTEST.$NGX_AUTOTEST_EXT >> $NGX_AUTOCONF_ERR
- echo "----------" >> $NGX_AUTOCONF_ERR
- echo $ngx_test >> $NGX_AUTOCONF_ERR
- echo "----------" >> $NGX_AUTOCONF_ERR
-fi
-
-rm -rf $NGX_AUTOTEST*
diff --git a/config b/config
index 0f829c7..5194775 100644
--- a/config
+++ b/config
@@ -54,119 +54,58 @@
fi
#
-# filter module (depends on Brotli C++ library)
+# filter module (depends on Brotli library)
#
-# new C++ API header (compressor.h)
-
-ngx_feature_name=NGX_HAVE_BROTLI_ENC_COMPRESSOR_H
+ngx_feature_name=
ngx_feature_run=no
-ngx_feature_cpp=yes
-ngx_feature_incs="#include <brotli/enc/compressor.h>"
-ngx_feature_test="brotli::BrotliParams params;
- params.quality = 11"
+ngx_feature_incs="#include <brotli/enc/encode.h>"
+ngx_feature_test="BrotliEncoderCreateInstance(NULL, NULL, NULL)"
# auto-discovery
-ngx_feature="Brotli C++ library (compressor.h)"
-ngx_feature_cpp=yes
+ngx_feature="Brotli library"
ngx_feature_path=
-ngx_feature_libs="-lbrotlienc -lstdc++"
-. $ngx_addon_dir/auto/feature
+ngx_feature_libs="-lbrotlienc"
+. auto/feature
if [ $ngx_found = no ]; then
# FreeBSD, OpenBSD
- ngx_feature="Brotli C++ library (compressor.h) in /usr/local/"
- ngx_feature_cpp=yes
+ ngx_feature="Brotli library in /usr/local/"
ngx_feature_path="/usr/local/include"
if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lbrotlienc -lstdc++"
+ ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lbrotlienc"
else
- ngx_feature_libs="-L/usr/local/lib -lbrotlienc -lstdc++"
+ ngx_feature_libs="-L/usr/local/lib -lbrotlienc"
fi
- . $ngx_addon_dir/auto/feature
+ . auto/feature
fi
if [ $ngx_found = no ]; then
# NetBSD
- ngx_feature="Brotli C++ library (compressor.h) in /usr/pkg/"
- ngx_feature_cpp=yes
+ ngx_feature="Brotli library in /usr/pkg/"
ngx_feature_path="/usr/pkg/include"
if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lbrotlienc -lstdc++"
+ ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lbrotlienc"
else
- ngx_feature_libs="-L/usr/pkg/lib -lbrotlienc -lstdc++"
+ ngx_feature_libs="-L/usr/pkg/lib -lbrotlienc"
fi
- . $ngx_addon_dir/auto/feature
+ . auto/feature
fi
if [ $ngx_found = no ]; then
# MacPorts
- ngx_feature="Brotli C++ library (compressor.h) in /opt/local/"
- ngx_feature_cpp=yes
+ ngx_feature="Brotli library in /opt/local/"
ngx_feature_path="/opt/local/include"
if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lbrotlienc -lstdc++"
+ ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lbrotlienc"
else
- ngx_feature_libs="-L/opt/local/lib -lbrotlienc -lstdc++"
+ ngx_feature_libs="-L/opt/local/lib -lbrotlienc"
fi
- . $ngx_addon_dir/auto/feature
-fi
-
-# original C++ API header (encode.h)
-
-ngx_feature_name=
-ngx_feature_incs="#include <brotli/enc/encode.h>"
-
-if [ $ngx_found = no ]; then
- # auto-discovery
- ngx_feature="Brotli C++ library (encode.h)"
- ngx_feature_cpp=yes
- ngx_feature_path=
- ngx_feature_libs="-lbrotlienc -lstdc++"
- . $ngx_addon_dir/auto/feature
+ . auto/feature
fi
if [ $ngx_found = no ]; then
- # FreeBSD, OpenBSD
- ngx_feature="Brotli C++ library (encode.h) in /usr/local/"
- ngx_feature_cpp=yes
- ngx_feature_path="/usr/local/include"
- if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lbrotlienc -lstdc++"
- else
- ngx_feature_libs="-L/usr/local/lib -lbrotlienc -lstdc++"
- fi
- . $ngx_addon_dir/auto/feature
-fi
-
-if [ $ngx_found = no ]; then
- # NetBSD
- ngx_feature="Brotli C++ library (encode.h) in /usr/pkg/"
- ngx_feature_cpp=yes
- ngx_feature_path="/usr/pkg/include"
- if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lbrotlienc -lstdc++"
- else
- ngx_feature_libs="-L/usr/pkg/lib -lbrotlienc -lstdc++"
- fi
- . $ngx_addon_dir/auto/feature
-fi
-
-if [ $ngx_found = no ]; then
- # MacPorts
- ngx_feature="Brotli C++ library (encode.h) in /opt/local/"
- ngx_feature_cpp=yes
- ngx_feature_path="/opt/local/include"
- if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lbrotlienc -lstdc++"
- else
- ngx_feature_libs="-L/opt/local/lib -lbrotlienc -lstdc++"
- fi
- . $ngx_addon_dir/auto/feature
-fi
-
-if [ $ngx_found = no ]; then
- echo "$0: error: ngx_brotli filter module requires Brotli C++ library."
+ echo "$0: error: ngx_brotli filter module requires Brotli library."
exit 1
fi
@@ -184,7 +123,7 @@
ngx_module_name=ngx_http_brotli_filter_module
ngx_module_incs="$ngx_feature_path"
ngx_module_deps=
- ngx_module_srcs="$ngx_addon_dir/src/ngx_http_brotli_filter_module.cc"
+ ngx_module_srcs="$ngx_addon_dir/src/ngx_http_brotli_filter_module.c"
ngx_module_libs="$ngx_feature_libs"
ngx_module_order="$ngx_module_name \
ngx_pagespeed \
@@ -216,14 +155,7 @@
| sed "s/$next/$next ngx_http_brotli_filter_module/"`
NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
- $ngx_addon_dir/src/ngx_http_brotli_filter_module.cc"
-fi
-
-# workaround for a bug in nginx-1.9.11, see:
-# http://hg.nginx.org/nginx/rev/ff1e625ae55b
-NGX_VERSION=`grep nginx_version src/core/nginx.h | sed -e 's/^.* \(.*\)$/\1/'`
-if [ "$NGX_VERSION" = "1009011" ]; then
- CFLAGS="$CFLAGS -Wno-write-strings"
+ $ngx_addon_dir/src/ngx_http_brotli_filter_module.c"
fi
have=NGX_HTTP_BROTLI_FILTER . auto/have
diff --git a/src/ngx_http_brotli_filter_module.cc b/src/ngx_http_brotli_filter_module.c
similarity index 79%
rename from src/ngx_http_brotli_filter_module.cc
rename to src/ngx_http_brotli_filter_module.c
index 2a6406b..e0ecc5c 100644
--- a/src/ngx_http_brotli_filter_module.cc
+++ b/src/ngx_http_brotli_filter_module.c
@@ -6,65 +6,60 @@
*/
-extern "C" {
- #include <ngx_config.h>
- #include <ngx_core.h>
- #include <ngx_http.h>
-}
+#include <ngx_config.h>
+#include <ngx_core.h>
+#include <ngx_http.h>
-#if (NGX_HAVE_BROTLI_ENC_COMPRESSOR_H)
-#include <brotli/enc/compressor.h>
-#else
#include <brotli/enc/encode.h>
-#endif
typedef struct {
- ngx_flag_t enable;
+ ngx_flag_t enable;
- ngx_hash_t types;
+ ngx_hash_t types;
- ngx_bufs_t bufs;
+ ngx_bufs_t bufs;
- ngx_int_t quality;
- size_t win_bits;
- ssize_t min_length;
+ ngx_int_t quality;
+ size_t win_bits;
+ ssize_t min_length;
- ngx_array_t *types_keys;
+ ngx_array_t *types_keys;
} ngx_http_brotli_conf_t;
typedef struct {
- brotli::BrotliCompressor *compressor;
- brotli::BrotliParams params;
+ BrotliEncoderState *encoder;
- size_t brotli_ring;
- size_t brotli_in;
- u_char *brotli_out;
- u_char *brotli_last;
+ size_t brotli_ring;
+ size_t brotli_in;
+ u_char *brotli_out;
+ u_char *brotli_last;
- size_t bytes_in;
- size_t bytes_out;
+ off_t content_length;
- ngx_chain_t *in;
- ngx_chain_t *free;
- ngx_chain_t *busy;
- ngx_chain_t *out;
- ngx_chain_t **last_out;
+ size_t bytes_in;
+ size_t bytes_out;
- ngx_buf_t *out_buf;
- ngx_int_t bufs;
+ ngx_chain_t *in;
+ ngx_chain_t *free;
+ ngx_chain_t *busy;
+ ngx_chain_t *out;
+ ngx_chain_t **last_out;
- unsigned done:1;
- unsigned sent:1;
- unsigned last:1;
- unsigned flush:1;
- unsigned nomem:1;
+ ngx_buf_t *out_buf;
+ ngx_int_t bufs;
+
+ unsigned done:1;
+ unsigned sent:1;
+ unsigned last:1;
+ unsigned flush:1;
+ unsigned nomem:1;
} ngx_http_brotli_ctx_t;
-static void ngx_http_brotli_filter_params(ngx_http_request_t *r,
- ngx_http_brotli_ctx_t *ctx);
+static BrotliEncoderState *ngx_http_brotli_filter_create_encoder(
+ ngx_http_request_t *r);
static ngx_int_t ngx_http_brotli_filter_add_data(ngx_http_request_t *r,
ngx_http_brotli_ctx_t *ctx);
static ngx_int_t ngx_http_brotli_filter_process(ngx_http_request_t *r,
@@ -191,8 +186,7 @@
ngx_http_brotli_ctx_t *ctx;
ngx_http_brotli_conf_t *conf;
- conf = reinterpret_cast<ngx_http_brotli_conf_t *>(
- ngx_http_get_module_loc_conf(r, ngx_http_brotli_filter_module));
+ conf = ngx_http_get_module_loc_conf(r, ngx_http_brotli_filter_module);
if (!conf->enable
|| (r->headers_out.status != NGX_HTTP_OK
@@ -214,20 +208,18 @@
return ngx_http_next_header_filter(r);
}
- ctx = reinterpret_cast<ngx_http_brotli_ctx_t *>(
- ngx_pcalloc(r->pool, sizeof(ngx_http_brotli_ctx_t)));
+ ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_brotli_ctx_t));
if (ctx == NULL) {
return NGX_ERROR;
}
ctx->last_out = &ctx->out;
- ngx_http_brotli_filter_params(r, ctx);
+ ctx->content_length = r->headers_out.content_length_n;
ngx_http_set_ctx(r, ctx, ngx_http_brotli_filter_module);
- h = reinterpret_cast<ngx_table_elt_t *>(
- ngx_list_push(&r->headers_out.headers));
+ h = ngx_list_push(&r->headers_out.headers);
if (h == NULL) {
return NGX_ERROR;
}
@@ -256,8 +248,7 @@
ngx_pool_cleanup_t *cln;
ngx_http_brotli_ctx_t *ctx;
- ctx = reinterpret_cast<ngx_http_brotli_ctx_t *>(
- ngx_http_get_module_ctx(r, ngx_http_brotli_filter_module));
+ ctx = ngx_http_get_module_ctx(r, ngx_http_brotli_filter_module);
if (ctx == NULL || ctx->done || r->header_only) {
return ngx_http_next_body_filter(r, in);
@@ -266,18 +257,13 @@
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http brotli filter");
- if (ctx->compressor == NULL) {
- ctx->compressor = new brotli::BrotliCompressor(ctx->params);
- if (ctx->compressor == NULL) {
+ if (ctx->encoder == NULL) {
+ ctx->encoder = ngx_http_brotli_filter_create_encoder(r);
+ if (ctx->encoder == NULL) {
goto failed;
}
- ctx->brotli_ring = ctx->compressor->input_block_size();
-
- ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
- "brotli compressor: lvl:%d win:%d blk:%uz",
- ctx->params.quality, (1 << ctx->params.lgwin),
- ctx->brotli_ring);
+ ctx->brotli_ring = BrotliEncoderInputBlockSize(ctx->encoder);
cln = ngx_pool_cleanup_add(r->pool, 0);
if (cln == NULL) {
@@ -374,9 +360,9 @@
if (ctx->done) {
ctx->sent = 1;
- if (ctx->compressor) {
- delete ctx->compressor;
- ctx->compressor = NULL;
+ if (ctx->encoder) {
+ BrotliEncoderDestroyInstance(ctx->encoder);
+ ctx->encoder = NULL;
}
return rc;
@@ -389,36 +375,73 @@
ctx->done = 1;
- if (ctx->compressor) {
- delete ctx->compressor;
- ctx->compressor = NULL;
+ if (ctx->encoder) {
+ BrotliEncoderDestroyInstance(ctx->encoder);
+ ctx->encoder = NULL;
}
return NGX_ERROR;
}
-static void
-ngx_http_brotli_filter_params(ngx_http_request_t *r, ngx_http_brotli_ctx_t *ctx)
+static BrotliEncoderState *
+ngx_http_brotli_filter_create_encoder(ngx_http_request_t *r)
{
int wbits;
+ BrotliEncoderState *encoder;
+ ngx_http_brotli_ctx_t *ctx;
ngx_http_brotli_conf_t *conf;
- conf = reinterpret_cast<ngx_http_brotli_conf_t *>(
- ngx_http_get_module_loc_conf(r, ngx_http_brotli_filter_module));
+ encoder = BrotliEncoderCreateInstance(NULL, NULL, NULL);
+ if (encoder == NULL) {
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
+ "BrotliEncoderCreateInstance() failed");
+ return NULL;
+ }
+
+ conf = ngx_http_get_module_loc_conf(r, ngx_http_brotli_filter_module);
+
+ if (!BrotliEncoderSetParameter(encoder, BROTLI_PARAM_QUALITY,
+ (uint32_t) conf->quality))
+ {
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
+ "BrotliEncoderSetParameter(QUALITY, %uD) failed",
+ (uint32_t) conf->quality);
+ goto failed;
+ }
+
+ ctx = ngx_http_get_module_ctx(r, ngx_http_brotli_filter_module);
wbits = conf->win_bits;
- if (r->headers_out.content_length_n > 0) {
- while (r->headers_out.content_length_n < (1 << (wbits - 1))
- && wbits > brotli::kMinWindowBits)
+ if (ctx->content_length > 0) {
+ while (ctx->content_length < (1 << (wbits - 1))
+ && wbits > kBrotliMinWindowBits)
{
wbits--;
}
}
- ctx->params.quality = conf->quality;
- ctx->params.lgwin = wbits;
+ if (!BrotliEncoderSetParameter(encoder, BROTLI_PARAM_LGWIN,
+ (uint32_t) wbits)) {
+ ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
+ "BrotliEncoderSetParameter(LGWIN, %uD) failed",
+ (uint32_t) wbits);
+ goto failed;
+ }
+
+ ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "brotli encoder: lvl:%i win:%d blk:%uz",
+ conf->quality, (1 << wbits),
+ BrotliEncoderInputBlockSize(encoder));
+
+ return encoder;
+
+failed:
+
+ BrotliEncoderDestroyInstance(encoder);
+
+ return NULL;
}
@@ -465,7 +488,7 @@
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"brotli copy: %p, size:%uz", b, size);
- ctx->compressor->CopyInputToRingBuffer(size, b->pos);
+ BrotliEncoderCopyInputToRingBuffer(ctx->encoder, size, b->pos);
ctx->brotli_in += size;
ctx->bytes_in += size;
@@ -502,7 +525,9 @@
out = NULL;
- if (!ctx->compressor->WriteBrotliData(ctx->last, ctx->flush, &size, &out)) {
+ if (!BrotliEncoderWriteData(ctx->encoder, ctx->last, ctx->flush, &size,
+ &out))
+ {
ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
"brotli failed: size:%uz l:%d f:%d",
ctx->brotli_in, ctx->last, ctx->flush);
@@ -581,7 +606,7 @@
return NGX_ERROR;
}
- cl->buf = reinterpret_cast<ngx_buf_t *>(ngx_calloc_buf(r->pool));
+ cl->buf = ngx_calloc_buf(r->pool);
if (cl->buf == NULL) {
return NGX_ERROR;
}
@@ -621,8 +646,7 @@
return NGX_OK;
}
- conf = reinterpret_cast<ngx_http_brotli_conf_t *>(
- ngx_http_get_module_loc_conf(r, ngx_http_brotli_filter_module));
+ conf = ngx_http_get_module_loc_conf(r, ngx_http_brotli_filter_module);
if (ctx->bufs < conf->bufs.num) {
ctx->out_buf = ngx_create_temp_buf(r->pool, conf->bufs.size);
@@ -646,13 +670,11 @@
static void
ngx_http_brotli_cleanup(void *data)
{
- ngx_http_brotli_ctx_t *ctx;
+ ngx_http_brotli_ctx_t *ctx = data;
- ctx = reinterpret_cast<ngx_http_brotli_ctx_t *>(data);
-
- if (ctx->compressor) {
- delete ctx->compressor;
- ctx->compressor = NULL;
+ if (ctx->encoder) {
+ BrotliEncoderDestroyInstance(ctx->encoder);
+ ctx->encoder = NULL;
}
}
@@ -693,7 +715,7 @@
{
u_char *p;
- p = ngx_strcasestrn(ae->data, const_cast<char *>("br"), sizeof("br") - 2);
+ p = ngx_strcasestrn(ae->data, "br", sizeof("br") - 2);
if (p == NULL) {
return NGX_DECLINED;
}
@@ -738,16 +760,14 @@
v->no_cacheable = 0;
v->not_found = 0;
- ctx = reinterpret_cast<ngx_http_brotli_ctx_t *>(
- ngx_http_get_module_ctx(r, ngx_http_brotli_filter_module));
+ ctx = ngx_http_get_module_ctx(r, ngx_http_brotli_filter_module);
if (ctx == NULL || ctx->bytes_out == 0 || !ctx->sent) {
v->not_found = 1;
return NGX_OK;
}
- v->data = reinterpret_cast<u_char *>(
- ngx_pnalloc(r->pool, NGX_INT32_LEN + 3));
+ v->data = ngx_pnalloc(r->pool, NGX_INT32_LEN + 3);
if (v->data == NULL) {
return NGX_ERROR;
}
@@ -778,8 +798,7 @@
{
ngx_http_brotli_conf_t *conf;
- conf = reinterpret_cast<ngx_http_brotli_conf_t *>(
- ngx_pcalloc(cf->pool, sizeof(ngx_http_brotli_conf_t)));
+ conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_brotli_conf_t));
if (conf == NULL) {
return NULL;
}
@@ -805,11 +824,8 @@
static char *
ngx_http_brotli_merge_conf(ngx_conf_t *cf, void *parent, void *child)
{
- ngx_http_brotli_conf_t *prev;
- ngx_http_brotli_conf_t *conf;
-
- prev = reinterpret_cast<ngx_http_brotli_conf_t *>(parent);
- conf = reinterpret_cast<ngx_http_brotli_conf_t *>(child);
+ ngx_http_brotli_conf_t *prev = parent;
+ ngx_http_brotli_conf_t *conf = child;
ngx_conf_merge_value(conf->enable, prev->enable, 0);
@@ -825,7 +841,7 @@
ngx_http_html_default_types)
!= NGX_OK)
{
- return reinterpret_cast<char *>(NGX_CONF_ERROR);
+ return NGX_CONF_ERROR;
}
return NGX_CONF_OK;
@@ -848,12 +864,11 @@
static char *
ngx_http_brotli_window(ngx_conf_t *cf, void *post, void *data)
{
- size_t *np = reinterpret_cast<size_t *>(data);
+ size_t *np = data;
+ size_t wbits, wsize, mbits;
- size_t wbits, wsize, mbits;
-
- wbits = brotli::kMaxWindowBits;
- mbits = brotli::kMinWindowBits;
+ wbits = kBrotliMaxWindowBits;
+ mbits = kBrotliMinWindowBits;
for (wsize = (1 << wbits); wsize >= (1U << mbits); wsize >>= 1) {
@@ -866,6 +881,6 @@
wbits--;
}
- return const_cast<char *>("must be 1k, 2k, 4k, 8k, 16k, 32k, 64k, "
- "128k, 256k, 512k, 1m, 2m, 4m, 8m or 16m");
+ return "must be 1k, 2k, 4k, 8k, 16k, 32k, 64k, "
+ "128k, 256k, 512k, 1m, 2m, 4m, 8m or 16m";
}