Mercurial > hg > nginx-quic
view auto/module @ 8601:4775c1d27378
HTTP/2: fixed timers left after request body reading.
Following rb->filter_need_buffering changes, request body reading is
only finished after the filter chain is called and rb->last_saved is set.
As such, with r->request_body_no_buffering, timer on fc->read is no
longer removed when the last part of the body is received, potentially
resulting in incorrect behaviour.
The fix is to call ngx_http_v2_process_request_body() from the
ngx_http_v2_read_unbuffered_request_body() function instead of
directly calling ngx_http_v2_filter_request_body(), so the timer
is properly removed.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 06 Sep 2021 14:54:48 +0300 |
parents | 4b1299b1856a |
children |
line wrap: on
line source
# Copyright (C) Ruslan Ermilov # Copyright (C) Nginx, Inc. case $ngx_module_type in HTTP_*) ngx_var=HTTP ;; *) ngx_var=$ngx_module_type ;; esac if [ "$ngx_module_link" = DYNAMIC ]; then for ngx_module in $ngx_module_name; do # extract the first name break done DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module" eval ${ngx_module}_MODULES=\"$ngx_module_name\" if [ -z "$ngx_module_order" -a \ \( "$ngx_module_type" = "HTTP_FILTER" \ -o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ] then eval ${ngx_module}_ORDER=\"$ngx_module_name \ ngx_http_copy_filter_module\" else eval ${ngx_module}_ORDER=\"$ngx_module_order\" fi srcs= shrd= for src in $ngx_module_srcs do found=no for old in $DYNAMIC_MODULES_SRCS do if [ $src = $old ]; then found=yes break fi done if [ $found = no ]; then srcs="$srcs $src" else shrd="$shrd $src" fi done eval ${ngx_module}_SRCS=\"$srcs\" eval ${ngx_module}_SHRD=\"$shrd\" DYNAMIC_MODULES_SRCS="$DYNAMIC_MODULES_SRCS $srcs" if test -n "$ngx_module_incs"; then CORE_INCS="$CORE_INCS $ngx_module_incs" fi if test -n "$ngx_module_deps"; then NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" fi libs= for lib in $ngx_module_libs do case $lib in LIBXSLT | LIBGD | GEOIP | PERL) libs="$libs \$NGX_LIB_$lib" if eval [ "\$USE_${lib}" = NO ] ; then eval USE_${lib}=DYNAMIC fi ;; PCRE | OPENSSL | ZLIB) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) libs="$libs $lib" ;; esac done eval ${ngx_module}_LIBS=\'$libs\' elif [ "$ngx_module_link" = YES ]; then eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ $ngx_module_name\" eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\" if test -n "$ngx_module_incs"; then eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" fi if test -n "$ngx_module_deps"; then eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\" fi for lib in $ngx_module_libs do case $lib in PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) CORE_LIBS="$CORE_LIBS $lib" ;; esac done elif [ "$ngx_module_link" = ADDON ]; then eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ $ngx_module_name\" srcs= for src in $ngx_module_srcs do found=no for old in $NGX_ADDON_SRCS do if [ $src = $old ]; then found=yes break fi done if [ $found = no ]; then srcs="$srcs $src" fi done NGX_ADDON_SRCS="$NGX_ADDON_SRCS $srcs" if test -n "$ngx_module_incs"; then eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" fi if test -n "$ngx_module_deps"; then NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" fi for lib in $ngx_module_libs do case $lib in PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) CORE_LIBS="$CORE_LIBS $lib" ;; esac done fi