From: Dmitry Volyntsev Date: Wed, 17 Sep 2025 22:34:19 +0000 (-0700) Subject: Modules: fixed building when http_ssl and stream_ssl unavailable. X-Git-Tag: 0.9.2~1 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=4ea1356af08e714076f57d02575f7845d6e80795;p=njs.git Modules: fixed building when http_ssl and stream_ssl unavailable. This fixes issue introduced in 7b3c8a66. --- diff --git a/.github/workflows/check-pr.yml b/.github/workflows/check-pr.yml index c75f3cbe..d5e0edd2 100644 --- a/.github/workflows/check-pr.yml +++ b/.github/workflows/check-pr.yml @@ -12,7 +12,10 @@ jobs: - name: Set the defaults and set up environment run: | - echo NGINX_CONFIGURE_CMD="auto/configure --prefix=/tmp --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-select_module --with-poll_module --with-http_auth_request_module --with-http_v2_module --with-http_slice_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-threads --with-cpp_test_module --with-compat --with-http_degradation_module --with-http_xslt_module --with-http_image_filter_module --with-http_perl_module --with-http_geoip_module --with-stream_geoip_module" >> $GITHUB_ENV + NGINX_BASE="auto/configure --prefix=/tmp --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-select_module --with-poll_module --with-http_auth_request_module --with-http_v2_module --with-http_slice_module --with-stream --with-stream_realip_module --with-threads --with-cpp_test_module --with-compat --with-http_degradation_module --with-http_xslt_module --with-http_image_filter_module --with-http_perl_module --with-http_geoip_module --with-stream_geoip_module" + SSL_MODULES="--with-http_ssl_module --with-mail_ssl_module --with-stream_ssl_module --with-stream_ssl_preread_module" + echo NGINX_CONFIGURE_CMD="$NGINX_BASE $SSL_MODULES" >> $GITHUB_ENV + echo NGINX_CONFIGURE_CMD_NO_SSL="$NGINX_BASE" >> $GITHUB_ENV export DEB_BUILD_MAINT_OPTIONS="hardening=+all" export DEB_CFLAGS_MAINT_APPEND="-fPIC" export DEB_LDFLAGS_MAINT_APPEND=""-Wl,--as-needed"" @@ -126,6 +129,21 @@ jobs: TEST_NGINX_GLOBALS: "load_module ${{ github.workspace }}/nginx-source/objs/ngx_http_js_module.so; load_module ${{ github.workspace }}/nginx-source/objs/ngx_stream_js_module.so;" TEST_NGINX_VERBOSE: 1 + - name: Configure and build nginx and njs modules, no SSL, static modules + run: | + cd nginx-source + NJS_OPENSSL=NO $NGINX_CONFIGURE_CMD_NO_SSL --with-cc-opt="$CC_OPT" --with-ld-opt="$LD_OPT" --add-module=../nginx || cat objs/autoconf.err + $MAKE_UTILITY -j$(nproc) modules + $MAKE_UTILITY -j$(nproc) + + - name: Test njs modules, no SSL, static modules + run: | + ulimit -c unlimited + prove -v -j$(nproc) -Inginx-tests/lib --state=save nginx/t . || prove -v -Inginx-tests/lib --state=failed + env: + TEST_NGINX_BINARY: "${{ github.workspace }}/nginx-source/objs/nginx" + TEST_NGINX_VERBOSE: 1 + - name: Create LSAN suppression file run: | cat << EOF > lsan_suppressions.txt diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index f9d9721a..2f3ce936 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -400,7 +400,7 @@ static ngx_conf_bitmask_t ngx_http_js_engines[] = { { ngx_null_string, 0 } }; -#if (NGX_HTTP_SSL) +#if (NGX_SSL) static ngx_conf_bitmask_t ngx_http_js_ssl_protocols[] = { { ngx_string("TLSv1"), NGX_SSL_TLSv1 }, @@ -519,7 +519,7 @@ static ngx_command_t ngx_http_js_commands[] = { offsetof(ngx_http_js_loc_conf_t, timeout), NULL }, -#if (NGX_HTTP_SSL) +#if (NGX_SSL) { ngx_string("js_fetch_ciphers"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, @@ -8172,7 +8172,7 @@ ngx_http_js_create_loc_conf(ngx_conf_t *cf) return NULL; } -#if (NGX_HTTP_SSL) +#if (NGX_SSL) conf->ssl_verify = NGX_CONF_UNSET; conf->ssl_verify_depth = NGX_CONF_UNSET; #endif diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c index efef3467..053c23c2 100644 --- a/nginx/ngx_js.c +++ b/nginx/ngx_js.c @@ -3996,7 +3996,7 @@ ngx_js_create_conf(ngx_conf_t *cf, size_t size) } -#if defined(NGX_HTTP_SSL) || defined(NGX_STREAM_SSL) +#if (NGX_SSL) static ngx_int_t ngx_js_merge_ssl(ngx_conf_t *cf, ngx_js_loc_conf_t *conf, @@ -4122,7 +4122,7 @@ ngx_js_merge_conf(ngx_conf_t *cf, void *parent, void *child, return NGX_CONF_ERROR; } -#if defined(NGX_HTTP_SSL) || defined(NGX_STREAM_SSL) +#if (NGX_SSL) if (ngx_js_merge_ssl(cf, conf, prev) != NGX_OK) { return NGX_CONF_ERROR; diff --git a/nginx/ngx_js.h b/nginx/ngx_js.h index af19e007..20ea85b1 100644 --- a/nginx/ngx_js.h +++ b/nginx/ngx_js.h @@ -144,7 +144,7 @@ typedef struct { ngx_queue_t fetch_keepalive_free -#if defined(NGX_HTTP_SSL) || defined(NGX_STREAM_SSL) +#if (NGX_SSL) #define NGX_JS_COMMON_LOC_CONF \ _NGX_JS_COMMON_LOC_CONF; \ \ diff --git a/nginx/ngx_js_http.c b/nginx/ngx_js_http.c index f07ccceb..35c67842 100644 --- a/nginx/ngx_js_http.c +++ b/nginx/ngx_js_http.c @@ -1643,9 +1643,11 @@ ngx_js_http_get_keepalive_connection(ngx_js_http_t *http) continue; } +#if (NGX_SSL) if ((http->ssl != NULL) != (cache->ssl != 0)) { continue; } +#endif if (ngx_strncasecmp(host->data, cache->host, host->len) != 0) { continue; @@ -1775,7 +1777,9 @@ ngx_js_http_free_keepalive_connection(ngx_js_http_t *http) cache->connection = c; +#if (NGX_SSL) cache->ssl = (http->ssl != NULL); +#endif ngx_memcpy(cache->host, http->host.data, http->host.len); cache->host_len = http->host.len; cache->port = http->port; diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c index ab4e787d..212af400 100644 --- a/nginx/ngx_stream_js_module.c +++ b/nginx/ngx_stream_js_module.c @@ -232,7 +232,7 @@ static ngx_conf_bitmask_t ngx_stream_js_engines[] = { { ngx_null_string, 0 } }; -#if (NGX_STREAM_SSL) +#if (NGX_SSL) static ngx_conf_bitmask_t ngx_stream_js_ssl_protocols[] = { { ngx_string("TLSv1"), NGX_SSL_TLSv1 }, @@ -379,7 +379,7 @@ static ngx_command_t ngx_stream_js_commands[] = { offsetof(ngx_stream_js_srv_conf_t, fetch_keepalive_timeout), NULL }, -#if (NGX_STREAM_SSL) +#if (NGX_SSL) { ngx_string("js_fetch_ciphers"), NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, @@ -3620,7 +3620,7 @@ ngx_stream_js_create_srv_conf(ngx_conf_t *cf) return NULL; } -#if (NGX_STREAM_SSL) +#if (NGX_SSL) conf->ssl_verify = NGX_CONF_UNSET; conf->ssl_verify_depth = NGX_CONF_UNSET; #endif diff --git a/nginx/t/js_webcrypto.t b/nginx/t/js_webcrypto.t index f43f9d6d..33869574 100644 --- a/nginx/t/js_webcrypto.t +++ b/nginx/t/js_webcrypto.t @@ -41,6 +41,10 @@ http { listen 127.0.0.1:8080; server_name localhost; + location /has_crypto { + js_content test.has_crypto; + } + location /random_values_test { js_content test.random_values_test; } @@ -50,6 +54,10 @@ http { EOF $t->write_file('test.js', <write_file('test.js', < (mean - 10 * stdd) && bits1 < (mean + 10 * stdd)); } - export default {random_values_test}; + export default {has_crypto, random_values_test}; EOF -$t->try_run('no njs')->plan(1); +$t->try_run('no njs'); + +plan(skip_all => 'njs crypto module not available') + if http_get('/has_crypto') !~ /true/; + +$t->plan(1); ############################################################################### diff --git a/nginx/t/stream_js_webcrypto.t b/nginx/t/stream_js_webcrypto.t index d7b34396..619a093d 100644 --- a/nginx/t/stream_js_webcrypto.t +++ b/nginx/t/stream_js_webcrypto.t @@ -23,7 +23,7 @@ use Test::Nginx::Stream qw/ stream /; select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->has(qw/stream stream_return/) +my $t = Test::Nginx->new()->has(qw/http stream stream_return/) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% @@ -33,6 +33,21 @@ daemon off; events { } +http { + %%TEST_GLOBALS_HTTP%% + + js_import test.js; + + server { + listen 127.0.0.1:8080; + server_name localhost; + + location /has_crypto { + js_content test.has_crypto; + } + } +} + stream { %%TEST_GLOBALS_STREAM%% @@ -49,6 +64,10 @@ stream { EOF $t->write_file('test.js', <write_file('test.js', < (mean - 10 * stdd) && bits1 < (mean + 10 * stdd); } - export default {random_values_test}; + export default {has_crypto, random_values_test}; EOF -$t->try_run('no stream js_var')->plan(1); +$t->try_run('no stream js_var'); + +plan(skip_all => 'njs crypto module not available') + if http_get('/has_crypto') !~ /true/; + +$t->plan(1); ###############################################################################