Conversation
|
Review requested:
|
|
@nodejs/http2 |
|
@trivikr This is not ready for review. I pinged the team to look into the failures. |
|
Diff has same files as that from |
|
The CI failures are either out of memory errors or timeouts. |
4815cb2 to
2814b9d
Compare
|
Blocked by test failures. |
2814b9d to
81bd35c
Compare
81bd35c to
b256db3
Compare
|
Bisecting points to nghttp2/nghttp2@7784fa9 Reverting nghttp2/nghttp2@7784fa9 makes the tests pass. Diffdiff --git a/deps/nghttp2/lib/CMakeLists.txt b/deps/nghttp2/lib/CMakeLists.txt
index 98e3dbe7682..fda8dcb7fc7 100644
--- a/deps/nghttp2/lib/CMakeLists.txt
+++ b/deps/nghttp2/lib/CMakeLists.txt
@@ -47,29 +47,7 @@ if(WIN32)
set(NGHTTP2_RES ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
endif()
-set(NGHTTP2_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
-set(NGHTTP2_VERSION_CONFIG "${NGHTTP2_GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
-set(NGHTTP2_PROJECT_CONFIG "${NGHTTP2_GENERATED_DIR}/${PROJECT_NAME}Config.cmake")
-set(NGHTTP2_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
-set(NGHTTP2_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
-set(NGHTTP2_NAMESPACE "${PROJECT_NAME}::")
-set(NGHTTP2_VERSION ${PROJECT_VERSION})
-
-include(CMakePackageConfigHelpers)
-write_basic_package_version_file(
- "${NGHTTP2_VERSION_CONFIG}" VERSION ${NGHTTP2_VERSION} COMPATIBILITY SameMajorVersion
-)
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.in" "${NGHTTP2_PROJECT_CONFIG}" @ONLY)
-
-# Install cmake config files
-install(
- FILES "${NGHTTP2_PROJECT_CONFIG}" "${NGHTTP2_VERSION_CONFIG}"
- DESTINATION "${NGHTTP2_CONFIG_INSTALL_DIR}")
-
-install(
- EXPORT "${NGHTTP2_TARGETS_EXPORT_NAME}"
- NAMESPACE "${NGHTTP2_NAMESPACE}"
- DESTINATION "${NGHTTP2_CONFIG_INSTALL_DIR}")
+set(EXPORT_SET "${PROJECT_NAME}-targets")
# Public shared library
if(BUILD_SHARED_LIBS)
@@ -87,11 +65,7 @@ if(BUILD_SHARED_LIBS)
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
- install(TARGETS ${SHARED_LIB}
- EXPORT ${NGHTTP2_TARGETS_EXPORT_NAME}
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ install(TARGETS ${SHARED_LIB} EXPORT ${EXPORT_SET})
list(APPEND nghttp2_exports ${SHARED_LIB})
endif()
@@ -113,9 +87,7 @@ if(BUILD_STATIC_LIBS)
target_compile_definitions(${STATIC_LIB} PUBLIC "-DNGHTTP2_STATICLIB")
- install(TARGETS ${STATIC_LIB}
- EXPORT ${NGHTTP2_TARGETS_EXPORT_NAME}
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ install(TARGETS ${STATIC_LIB} EXPORT ${EXPORT_SET})
list(APPEND nghttp2_exports ${STATIC_LIB})
endif()
@@ -125,7 +97,11 @@ else()
set(LIB_SELECTED ${STATIC_LIB})
endif()
-add_library(nghttp2 ALIAS ${LIB_SELECTED})
+add_library(${PROJECT_NAME}::nghttp2 ALIAS ${LIB_SELECTED})
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libnghttp2.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+
+install(EXPORT ${EXPORT_SET}
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ NAMESPACE ${PROJECT_NAME}::)
diff --git a/deps/nghttp2/lib/Makefile.am b/deps/nghttp2/lib/Makefile.am
index 3a743df6ae7..1168c1e6135 100644
--- a/deps/nghttp2/lib/Makefile.am
+++ b/deps/nghttp2/lib/Makefile.am
@@ -22,7 +22,7 @@
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SUBDIRS = includes
-EXTRA_DIST = Makefile.msvc CMakeLists.txt version.rc.in config.cmake.in
+EXTRA_DIST = Makefile.msvc CMakeLists.txt version.rc.in
AM_CFLAGS = $(WARNCFLAGS) $(EXTRACFLAG)
AM_CPPFLAGS = -I$(srcdir)/includes -I$(builddir)/includes -DBUILDING_NGHTTP2 \
diff --git a/deps/nghttp2/lib/Makefile.in b/deps/nghttp2/lib/Makefile.in
index bb458a182c9..900e89c7cce 100644
--- a/deps/nghttp2/lib/Makefile.in
+++ b/deps/nghttp2/lib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -86,6 +86,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+am__rm_f = rm -f $(am__rm_f_notfound)
+am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -141,10 +143,9 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
+ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -360,8 +361,6 @@ LIBNGHTTP3_LIBS = @LIBNGHTTP3_LIBS@
LIBNGTCP2_CFLAGS = @LIBNGTCP2_CFLAGS@
LIBNGTCP2_CRYPTO_BORINGSSL_CFLAGS = @LIBNGTCP2_CRYPTO_BORINGSSL_CFLAGS@
LIBNGTCP2_CRYPTO_BORINGSSL_LIBS = @LIBNGTCP2_CRYPTO_BORINGSSL_LIBS@
-LIBNGTCP2_CRYPTO_LIBRESSL_CFLAGS = @LIBNGTCP2_CRYPTO_LIBRESSL_CFLAGS@
-LIBNGTCP2_CRYPTO_LIBRESSL_LIBS = @LIBNGTCP2_CRYPTO_LIBRESSL_LIBS@
LIBNGTCP2_CRYPTO_OSSL_CFLAGS = @LIBNGTCP2_CRYPTO_OSSL_CFLAGS@
LIBNGTCP2_CRYPTO_OSSL_LIBS = @LIBNGTCP2_CRYPTO_OSSL_LIBS@
LIBNGTCP2_CRYPTO_QUICTLS_CFLAGS = @LIBNGTCP2_CRYPTO_QUICTLS_CFLAGS@
@@ -436,8 +435,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
+am__xargs_n = @am__xargs_n@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -496,7 +497,7 @@ top_srcdir = @top_srcdir@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SUBDIRS = includes
-EXTRA_DIST = Makefile.msvc CMakeLists.txt version.rc.in config.cmake.in
+EXTRA_DIST = Makefile.msvc CMakeLists.txt version.rc.in
AM_CFLAGS = $(WARNCFLAGS) $(EXTRACFLAG)
AM_CPPFLAGS = -I$(srcdir)/includes -I$(builddir)/includes -DBUILDING_NGHTTP2 \
@DEFS@
@@ -612,15 +613,13 @@ uninstall-libLTLIBRARIES:
done
clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ -$(am__rm_f) $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
+ echo rm -f $${locs}; \
+ $(am__rm_f) $${locs}
libnghttp2.la: $(libnghttp2_la_OBJECTS) $(libnghttp2_la_DEPENDENCIES) $(EXTRA_libnghttp2_la_DEPENDENCIES)
$(AM_V_CCLD)$(libnghttp2_la_LINK) -rpath $(libdir) $(libnghttp2_la_OBJECTS) $(libnghttp2_la_LIBADD) $(LIBS)
@@ -660,7 +659,7 @@ distclean-compile:
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+ @: >>$@
am--depfiles: $(am__depfiles_remade)
@@ -813,6 +812,7 @@ cscopelist-am: $(am__tagged_files)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
@@ -903,9 +903,9 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+ -$(am__rm_f) $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
+ -$(am__rm_f) $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -916,7 +916,7 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-recursive
- -rm -f ./$(DEPDIR)/nghttp2_alpn.Plo
+ -rm -f ./$(DEPDIR)/nghttp2_alpn.Plo
-rm -f ./$(DEPDIR)/nghttp2_buf.Plo
-rm -f ./$(DEPDIR)/nghttp2_callbacks.Plo
-rm -f ./$(DEPDIR)/nghttp2_debug.Plo
@@ -987,7 +987,7 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
- -rm -f ./$(DEPDIR)/nghttp2_alpn.Plo
+ -rm -f ./$(DEPDIR)/nghttp2_alpn.Plo
-rm -f ./$(DEPDIR)/nghttp2_buf.Plo
-rm -f ./$(DEPDIR)/nghttp2_callbacks.Plo
-rm -f ./$(DEPDIR)/nghttp2_debug.Plo
@@ -1055,3 +1055,10 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+
+# Tell GNU make to disable its built-in pattern rules.
+%:: %,v
+%:: RCS/%,v
+%:: RCS/%
+%:: s.%
+%:: SCCS/s.%
diff --git a/deps/nghttp2/lib/config.cmake.in b/deps/nghttp2/lib/config.cmake.in
deleted file mode 100644
index 0b677718f46..00000000000
--- a/deps/nghttp2/lib/config.cmake.in
+++ /dev/null
@@ -1,3 +0,0 @@
-include(CMakeFindDependencyMacro)
-
-include("${CMAKE_CURRENT_LIST_DIR}/@NGHTTP2_TARGETS_EXPORT_NAME@.cmake")
diff --git a/deps/nghttp2/lib/includes/Makefile.in b/deps/nghttp2/lib/includes/Makefile.in
index a4687390385..01cd60afbd9 100644
--- a/deps/nghttp2/lib/includes/Makefile.in
+++ b/deps/nghttp2/lib/includes/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,6 +93,8 @@ am__make_running_with_option = \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+am__rm_f = rm -f $(am__rm_f_notfound)
+am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -168,10 +170,9 @@ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
+ { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
am__installdirs = "$(DESTDIR)$(includedir)"
HEADERS = $(nobase_include_HEADERS)
@@ -265,8 +266,6 @@ LIBNGHTTP3_LIBS = @LIBNGHTTP3_LIBS@
LIBNGTCP2_CFLAGS = @LIBNGTCP2_CFLAGS@
LIBNGTCP2_CRYPTO_BORINGSSL_CFLAGS = @LIBNGTCP2_CRYPTO_BORINGSSL_CFLAGS@
LIBNGTCP2_CRYPTO_BORINGSSL_LIBS = @LIBNGTCP2_CRYPTO_BORINGSSL_LIBS@
-LIBNGTCP2_CRYPTO_LIBRESSL_CFLAGS = @LIBNGTCP2_CRYPTO_LIBRESSL_CFLAGS@
-LIBNGTCP2_CRYPTO_LIBRESSL_LIBS = @LIBNGTCP2_CRYPTO_LIBRESSL_LIBS@
LIBNGTCP2_CRYPTO_OSSL_CFLAGS = @LIBNGTCP2_CRYPTO_OSSL_CFLAGS@
LIBNGTCP2_CRYPTO_OSSL_LIBS = @LIBNGTCP2_CRYPTO_OSSL_LIBS@
LIBNGTCP2_CRYPTO_QUICTLS_CFLAGS = @LIBNGTCP2_CRYPTO_QUICTLS_CFLAGS@
@@ -341,8 +340,10 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
+am__xargs_n = @am__xargs_n@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -508,6 +509,7 @@ cscopelist-am: $(am__tagged_files)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
@@ -572,8 +574,8 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -$(am__rm_f) $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -666,3 +668,10 @@ uninstall-am: uninstall-nobase_includeHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+
+# Tell GNU make to disable its built-in pattern rules.
+%:: %,v
+%:: RCS/%,v
+%:: RCS/%
+%:: s.%
+%:: SCCS/s.%
diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h
index 19c1874f23a..16ce542d757 100644
--- a/deps/nghttp2/lib/includes/nghttp2/nghttp2.h
+++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2.h
@@ -2039,19 +2039,18 @@ typedef int (*nghttp2_on_header_callback2)(nghttp2_session *session,
/**
* @functypedef
*
- * Callback function invoked when an invalid header name/value pair is
+ * Callback function invoked when a invalid header name/value pair is
* received for the |frame|.
*
* The parameter and behaviour are similar to
* :type:`nghttp2_on_header_callback`. The difference is that this
- * callback is only invoked when an invalid header name/value pair is
- * received which is treated as stream error if this callback returns
- * :enum:`nghttp2_error.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE` and
- * :type:`nghttp2_on_invalid_header_callback2` is not set. Only
- * invalid regular header field are passed to this callback. In other
- * words, invalid pseudo header field is not passed to this callback.
- * Also header fields which includes upper cased latter are also
- * treated as error without passing them to this callback.
+ * callback is only invoked when a invalid header name/value pair is
+ * received which is treated as stream error if this callback is not
+ * set. Only invalid regular header field are passed to this
+ * callback. In other words, invalid pseudo header field is not
+ * passed to this callback. Also header fields which includes upper
+ * cased latter are also treated as error without passing them to this
+ * callback.
*
* This callback is only considered if HTTP messaging validation is
* turned on (which is on by default, see
@@ -2077,18 +2076,17 @@ typedef int (*nghttp2_on_invalid_header_callback)(
/**
* @functypedef
*
- * Callback function invoked when an invalid header name/value pair is
+ * Callback function invoked when a invalid header name/value pair is
* received for the |frame|.
*
* The parameter and behaviour are similar to
* :type:`nghttp2_on_header_callback2`. The difference is that this
- * callback is only invoked when an invalid header name/value pair is
- * received which is silently ignored if neither this callback nor
- * :type:`nghttp2_on_invalid_header_callback` is set. Only invalid
- * regular header field are passed to this callback. In other words,
- * invalid pseudo header field is not passed to this callback. Also
- * header fields which includes upper cased latter are also treated as
- * error without passing them to this callback.
+ * callback is only invoked when a invalid header name/value pair is
+ * received which is silently ignored if this callback is not set.
+ * Only invalid regular header field are passed to this callback. In
+ * other words, invalid pseudo header field is not passed to this
+ * callback. Also header fields which includes upper cased latter are
+ * also treated as error without passing them to this callback.
*
* This callback is only considered if HTTP messaging validation is
* turned on (which is on by default, see
@@ -2660,7 +2658,7 @@ NGHTTP2_EXTERN void nghttp2_session_callbacks_set_on_header_callback2(
/**
* @function
*
- * Sets callback function invoked when an invalid header name/value
+ * Sets callback function invoked when a invalid header name/value
* pair is received. If both
* `nghttp2_session_callbacks_set_on_invalid_header_callback()` and
* `nghttp2_session_callbacks_set_on_invalid_header_callback2()` are
@@ -2673,7 +2671,7 @@ NGHTTP2_EXTERN void nghttp2_session_callbacks_set_on_invalid_header_callback(
/**
* @function
*
- * Sets callback function invoked when an invalid header name/value
+ * Sets callback function invoked when a invalid header name/value
* pair is received.
*/
NGHTTP2_EXTERN void nghttp2_session_callbacks_set_on_invalid_header_callback2(
@@ -3241,23 +3239,6 @@ nghttp2_option_set_stream_reset_rate_limit(nghttp2_option *option,
NGHTTP2_EXTERN void nghttp2_option_set_max_continuations(nghttp2_option *option,
size_t val);
-/**
- * @function
- *
- * This function sets the rate limit for the "glitches", the
- * suspicious activities from a remote endpoint. It is a token-bucket
- * based rate limiter. |burst| specifies the number of tokens that is
- * initially available. The maximum number of tokens is capped to
- * this value. |rate| specifies the number of tokens that are
- * regenerated per second. When a suspicious activity is detected,
- * some amount of tokens are consumed. If there is no token
- * available, GOAWAY is sent to tear down the connection. |burst| and
- * |rate| default to 1000 and 33 respectively.
- */
-NGHTTP2_EXTERN void nghttp2_option_set_glitch_rate_limit(nghttp2_option *option,
- uint64_t burst,
- uint64_t rate);
-
/**
* @function
*
diff --git a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
index bd5e6c28723..9d74f2ec042 100644
--- a/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
+++ b/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
@@ -29,7 +29,7 @@
* @macro
* Version number of the nghttp2 library release
*/
-#define NGHTTP2_VERSION "1.67.1"
+#define NGHTTP2_VERSION "1.67.0-DEV"
/**
* @macro
@@ -37,6 +37,6 @@
* release. This is a 24 bit number with 8 bits for major number, 8 bits
* for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
*/
-#define NGHTTP2_VERSION_NUM 0x014301
+#define NGHTTP2_VERSION_NUM 0x014300
#endif /* NGHTTP2VER_H */
diff --git a/deps/nghttp2/lib/nghttp2_int.h b/deps/nghttp2/lib/nghttp2_int.h
index 5ee6b313a01..b23585ccb27 100644
--- a/deps/nghttp2/lib/nghttp2_int.h
+++ b/deps/nghttp2/lib/nghttp2_int.h
@@ -52,11 +52,7 @@ typedef enum {
* Unlike NGHTTP2_ERR_IGN_HTTP_HEADER, this does not invoke
* nghttp2_on_invalid_header_callback.
*/
- NGHTTP2_ERR_REMOVE_HTTP_HEADER = -106,
- /*
- * Cancel pushed stream.
- */
- NGHTTP2_ERR_PUSH_CANCEL = -107,
+ NGHTTP2_ERR_REMOVE_HTTP_HEADER = -106
} nghttp2_internal_error;
#endif /* NGHTTP2_INT_H */
diff --git a/deps/nghttp2/lib/nghttp2_option.c b/deps/nghttp2/lib/nghttp2_option.c
index 7e44a241ba1..02a24eee6b2 100644
--- a/deps/nghttp2/lib/nghttp2_option.c
+++ b/deps/nghttp2/lib/nghttp2_option.c
@@ -155,10 +155,3 @@ void nghttp2_option_set_max_continuations(nghttp2_option *option, size_t val) {
option->opt_set_mask |= NGHTTP2_OPT_MAX_CONTINUATIONS;
option->max_continuations = val;
}
-
-void nghttp2_option_set_glitch_rate_limit(nghttp2_option *option,
- uint64_t burst, uint64_t rate) {
- option->opt_set_mask |= NGHTTP2_OPT_GLITCH_RATE_LIMIT;
- option->glitch_burst = burst;
- option->glitch_rate = rate;
-}
diff --git a/deps/nghttp2/lib/nghttp2_option.h b/deps/nghttp2/lib/nghttp2_option.h
index 78fa21e4a77..c89cb97f8bb 100644
--- a/deps/nghttp2/lib/nghttp2_option.h
+++ b/deps/nghttp2/lib/nghttp2_option.h
@@ -72,7 +72,6 @@ typedef enum {
NGHTTP2_OPT_NO_RFC9113_LEADING_AND_TRAILING_WS_VALIDATION = 1 << 14,
NGHTTP2_OPT_STREAM_RESET_RATE_LIMIT = 1 << 15,
NGHTTP2_OPT_MAX_CONTINUATIONS = 1 << 16,
- NGHTTP2_OPT_GLITCH_RATE_LIMIT = 1 << 17,
} nghttp2_option_flag;
/**
@@ -84,11 +83,6 @@ struct nghttp2_option {
*/
uint64_t stream_reset_burst;
uint64_t stream_reset_rate;
- /**
- * NGHTTP2_OPT_GLITCH_RATE_LIMIT
- */
- uint64_t glitch_burst;
- uint64_t glitch_rate;
/**
* NGHTTP2_OPT_MAX_SEND_HEADER_BLOCK_LENGTH
*/
diff --git a/deps/nghttp2/lib/nghttp2_session.c b/deps/nghttp2/lib/nghttp2_session.c
index a7ab61d29a5..2d7bb7bb971 100644
--- a/deps/nghttp2/lib/nghttp2_session.c
+++ b/deps/nghttp2/lib/nghttp2_session.c
@@ -475,10 +475,6 @@ static int session_new(nghttp2_session **session_ptr,
NGHTTP2_DEFAULT_STREAM_RESET_BURST,
NGHTTP2_DEFAULT_STREAM_RESET_RATE);
- nghttp2_ratelim_init(&(*session_ptr)->glitch_ratelim,
- NGHTTP2_DEFAULT_GLITCH_BURST,
- NGHTTP2_DEFAULT_GLITCH_RATE);
-
if (server) {
(*session_ptr)->server = 1;
}
@@ -571,11 +567,6 @@ static int session_new(nghttp2_session **session_ptr,
if (option->opt_set_mask & NGHTTP2_OPT_MAX_CONTINUATIONS) {
(*session_ptr)->max_continuations = option->max_continuations;
}
-
- if (option->opt_set_mask & NGHTTP2_OPT_GLITCH_RATE_LIMIT) {
- nghttp2_ratelim_init(&(*session_ptr)->glitch_ratelim,
- option->glitch_burst, option->glitch_rate);
- }
}
rv = nghttp2_hd_deflate_init2(&(*session_ptr)->hd_deflater,
@@ -3272,9 +3263,7 @@ static int session_call_on_invalid_header(nghttp2_session *session,
session, frame, nv->name->base, nv->name->len, nv->value->base,
nv->value->len, nv->flags, session->user_data);
} else {
- /* If both callbacks are not set, the invalid field nv is
- ignored. */
- return 0;
+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
}
if (rv == NGHTTP2_ERR_PAUSE || rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
@@ -3359,10 +3348,6 @@ static uint32_t get_error_code_from_lib_error_code(int lib_error_code) {
case NGHTTP2_ERR_HTTP_HEADER:
case NGHTTP2_ERR_HTTP_MESSAGING:
return NGHTTP2_PROTOCOL_ERROR;
- case NGHTTP2_ERR_INTERNAL:
- return NGHTTP2_INTERNAL_ERROR;
- case NGHTTP2_ERR_PUSH_CANCEL:
- return NGHTTP2_CANCEL;
default:
return NGHTTP2_INTERNAL_ERROR;
}
@@ -3389,32 +3374,17 @@ static int session_call_on_invalid_frame_recv_callback(nghttp2_session *session,
return 0;
}
-static int session_update_glitch_ratelim(nghttp2_session *session) {
- if (session->goaway_flags & NGHTTP2_GOAWAY_TERM_ON_SEND) {
- return 0;
- }
-
- nghttp2_ratelim_update(&session->glitch_ratelim, nghttp2_time_now_sec());
-
- if (nghttp2_ratelim_drain(&session->glitch_ratelim, 1) == 0) {
- return 0;
- }
-
- return nghttp2_session_terminate_session(session, NGHTTP2_ENHANCE_YOUR_CALM);
-}
-
static int session_handle_invalid_stream2(nghttp2_session *session,
int32_t stream_id,
nghttp2_frame *frame,
int lib_error_code) {
int rv;
-
rv = nghttp2_session_add_rst_stream(
session, stream_id, get_error_code_from_lib_error_code(lib_error_code));
if (rv != 0) {
return rv;
}
- if (frame && session->callbacks.on_invalid_frame_recv_callback) {
+ if (session->callbacks.on_invalid_frame_recv_callback) {
if (session->callbacks.on_invalid_frame_recv_callback(
session, frame, lib_error_code, session->user_data) != 0) {
return NGHTTP2_ERR_CALLBACK_FAILURE;
@@ -3569,29 +3539,7 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame,
rv2 = session_call_on_invalid_header(session, frame, &nv);
if (rv2 == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
- DEBUGF("recv: HTTP error: type=%u, id=%d, header %.*s: %.*s\n",
- frame->hd.type, frame->hd.stream_id, (int)nv.name->len,
- nv.name->base, (int)nv.value->len, nv.value->base);
-
- rv = session_call_error_callback(
- session, NGHTTP2_ERR_HTTP_HEADER,
- "Invalid HTTP header field was received: frame type: "
- "%u, stream: %d, name: [%.*s], value: [%.*s]",
- frame->hd.type, frame->hd.stream_id, (int)nv.name->len,
- nv.name->base, (int)nv.value->len, nv.value->base);
-
- if (nghttp2_is_fatal(rv)) {
- return rv;
- }
-
- rv = session_handle_invalid_stream2(
- session, subject_stream->stream_id, frame,
- NGHTTP2_ERR_HTTP_HEADER);
- if (nghttp2_is_fatal(rv)) {
- return rv;
- }
-
- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+ rv = NGHTTP2_ERR_HTTP_HEADER;
} else {
if (rv2 != 0) {
return rv2;
@@ -3631,8 +3579,13 @@ static int inflate_header_block(nghttp2_session *session, nghttp2_frame *frame,
return rv;
}
- return nghttp2_session_terminate_session(session,
- NGHTTP2_PROTOCOL_ERROR);
+ rv =
+ session_handle_invalid_stream2(session, subject_stream->stream_id,
+ frame, NGHTTP2_ERR_HTTP_HEADER);
+ if (nghttp2_is_fatal(rv)) {
+ return rv;
+ }
+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
}
}
if (rv == 0) {
@@ -3745,7 +3698,27 @@ static int session_after_header_block_received(nghttp2_session *session) {
}
}
if (rv != 0) {
- return nghttp2_session_terminate_session(session, NGHTTP2_PROTOCOL_ERROR);
+ int32_t stream_id;
+
+ if (frame->hd.type == NGHTTP2_PUSH_PROMISE) {
+ stream_id = frame->push_promise.promised_stream_id;
+ } else {
+ stream_id = frame->hd.stream_id;
+ }
+
+ rv = session_handle_invalid_stream2(session, stream_id, frame,
+ NGHTTP2_ERR_HTTP_MESSAGING);
+ if (nghttp2_is_fatal(rv)) {
+ return rv;
+ }
+
+ if (frame->hd.type == NGHTTP2_HEADERS &&
+ (frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) {
+ nghttp2_stream_shutdown(stream, NGHTTP2_SHUT_RD);
+ /* Don't call nghttp2_session_close_stream_if_shut_rdwr
+ because RST_STREAM has been submitted. */
+ }
+ return 0;
}
}
@@ -4081,7 +4054,8 @@ static int update_remote_initial_window_size_func(void *entry, void *ptr) {
rv = nghttp2_stream_update_remote_initial_window_size(
stream, arg->new_window_size, arg->old_window_size);
if (rv != 0) {
- return NGHTTP2_ERR_FLOW_CONTROL;
+ return nghttp2_session_add_rst_stream(arg->session, stream->stream_id,
+ NGHTTP2_FLOW_CONTROL_ERROR);
}
/* If window size gets positive, push deferred DATA frame to
@@ -4107,8 +4081,6 @@ static int update_remote_initial_window_size_func(void *entry, void *ptr) {
*
* NGHTTP2_ERR_NOMEM
* Out of memory.
- * NGHTTP2_ERR_FLOW_CONTROL
- * Window size gets out of range.
*/
static int
session_update_remote_initial_window_size(nghttp2_session *session,
@@ -4132,7 +4104,8 @@ static int update_local_initial_window_size_func(void *entry, void *ptr) {
rv = nghttp2_stream_update_local_initial_window_size(
stream, arg->new_window_size, arg->old_window_size);
if (rv != 0) {
- return NGHTTP2_ERR_FLOW_CONTROL;
+ return nghttp2_session_add_rst_stream(arg->session, stream->stream_id,
+ NGHTTP2_FLOW_CONTROL_ERROR);
}
if (stream->window_update_queued) {
@@ -4166,8 +4139,6 @@ static int update_local_initial_window_size_func(void *entry, void *ptr) {
*
* NGHTTP2_ERR_NOMEM
* Out of memory.
- * NGHTTP2_ERR_FLOW_CONTROL
- * Window size gets out of range.
*/
static int
session_update_local_initial_window_size(nghttp2_session *session,
@@ -4554,9 +4525,9 @@ int nghttp2_session_on_push_promise_received(nghttp2_session *session,
session->max_incoming_reserved_streams) {
/* Currently, client does not retain closed stream, so we don't
check NGHTTP2_SHUT_RD condition here. */
- rv = session_handle_invalid_stream2(session,
- frame->push_promise.promised_stream_id,
- NULL, NGHTTP2_ERR_PUSH_CANCEL);
+
+ rv = nghttp2_session_add_rst_stream(
+ session, frame->push_promise.promised_stream_id, NGHTTP2_CANCEL);
if (rv != 0) {
return rv;
}
@@ -4713,9 +4684,8 @@ static int session_on_stream_window_update_received(nghttp2_session *session,
}
if (NGHTTP2_MAX_WINDOW_SIZE - frame->window_update.window_size_increment <
stream->remote_window_size) {
- return session_handle_invalid_connection(
- session, frame, NGHTTP2_ERR_FLOW_CONTROL,
- "WINDOW_UPDATE: window size overflow");
+ return session_handle_invalid_stream(session, frame,
+ NGHTTP2_ERR_FLOW_CONTROL);
}
stream->remote_window_size += frame->window_update.window_size_increment;
@@ -4945,7 +4915,16 @@ int nghttp2_session_on_data_received(nghttp2_session *session,
if (session_enforce_http_messaging(session) &&
(frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) {
if (nghttp2_http_on_remote_end_stream(stream) != 0) {
- return nghttp2_session_terminate_session(session, NGHTTP2_PROTOCOL_ERROR);
+ rv = nghttp2_session_add_rst_stream(session, stream->stream_id,
+ NGHTTP2_PROTOCOL_ERROR);
+ if (nghttp2_is_fatal(rv)) {
+ return rv;
+ }
+
+ nghttp2_stream_shutdown(stream, NGHTTP2_SHUT_RD);
+ /* Don't call nghttp2_session_close_stream_if_shut_rdwr because
+ RST_STREAM has been submitted. */
+ return 0;
}
}
@@ -5003,8 +4982,8 @@ int nghttp2_session_update_recv_stream_window_size(nghttp2_session *session,
rv = adjust_recv_window_size(&stream->recv_window_size, delta_size,
stream->local_window_size);
if (rv != 0) {
- return nghttp2_session_terminate_session(session,
- NGHTTP2_FLOW_CONTROL_ERROR);
+ return nghttp2_session_add_rst_stream(session, stream->stream_id,
+ NGHTTP2_FLOW_CONTROL_ERROR);
}
/* We don't have to send WINDOW_UPDATE if the data received is the
last chunk in the incoming stream. */
@@ -5472,16 +5451,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
if (rv == NGHTTP2_ERR_IGN_PAYLOAD) {
DEBUGF("recv: DATA not allowed stream_id=%d\n",
iframe->frame.hd.stream_id);
-
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
iframe->state = NGHTTP2_IB_IGN_DATA;
break;
}
@@ -5507,20 +5476,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
break;
}
- /* Empty DATA frame without END_STREAM flag set is
- suspicious. */
- if (iframe->payloadleft == 0 &&
- (iframe->frame.hd.flags & NGHTTP2_FLAG_END_STREAM) == 0) {
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
- }
-
iframe->state = NGHTTP2_IB_READ_DATA;
break;
}
@@ -5587,8 +5542,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
}
if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
- rv = session_handle_invalid_stream2(
- session, iframe->frame.hd.stream_id, NULL, NGHTTP2_ERR_INTERNAL);
+ rv = nghttp2_session_add_rst_stream(
+ session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
if (nghttp2_is_fatal(rv)) {
return rv;
}
@@ -5597,15 +5552,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
}
if (rv == NGHTTP2_ERR_IGN_HEADER_BLOCK) {
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
break;
}
@@ -5626,18 +5572,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
break;
}
- /* This is deprecated RFC 7540 priorities mechanism which is
- very unpopular. We do not expect it is received so
- frequently. */
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
iframe->state = NGHTTP2_IB_READ_NBYTE;
inbound_frame_set_mark(iframe, NGHTTP2_PRIORITY_SPECLEN);
@@ -5810,17 +5744,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
if (check_ext_type_set(session->user_recv_ext_types,
iframe->frame.hd.type)) {
if (!session->callbacks.unpack_extension_callback) {
- /* Receiving too frequent unknown frames is suspicious. */
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
/* Silently ignore unknown frame type. */
+
busy = 1;
iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
@@ -5932,17 +5857,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
break;
}
- /* Receiving too frequent PRIORITY_UPDATE is
- suspicious. */
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
if (iframe->payloadleft > sizeof(iframe->raw_sbuf)) {
busy = 1;
iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
@@ -5956,16 +5870,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
break;
default:
- /* Receiving too frequent unknown frames is suspicious. */
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
busy = 1;
iframe->state = NGHTTP2_IB_IGN_PAYLOAD;
@@ -6052,8 +5956,8 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
}
if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
- rv = session_handle_invalid_stream2(
- session, iframe->frame.hd.stream_id, NULL, NGHTTP2_ERR_INTERNAL);
+ rv = nghttp2_session_add_rst_stream(
+ session, iframe->frame.hd.stream_id, NGHTTP2_INTERNAL_ERROR);
if (nghttp2_is_fatal(rv)) {
return rv;
}
@@ -6062,15 +5966,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
}
if (rv == NGHTTP2_ERR_IGN_HEADER_BLOCK) {
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
break;
}
@@ -6136,9 +6031,9 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
}
if (rv == NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE) {
- rv = session_handle_invalid_stream2(
- session, iframe->frame.push_promise.promised_stream_id, NULL,
- NGHTTP2_ERR_INTERNAL);
+ rv = nghttp2_session_add_rst_stream(
+ session, iframe->frame.push_promise.promised_stream_id,
+ NGHTTP2_INTERNAL_ERROR);
if (nghttp2_is_fatal(rv)) {
return rv;
}
@@ -6316,12 +6211,12 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
iframe->payloadleft -= hd_proclen;
/* Use promised stream ID for PUSH_PROMISE */
- rv = session_handle_invalid_stream2(
+ rv = nghttp2_session_add_rst_stream(
session,
iframe->frame.hd.type == NGHTTP2_PUSH_PROMISE
? iframe->frame.push_promise.promised_stream_id
: iframe->frame.hd.stream_id,
- NULL, NGHTTP2_ERR_INTERNAL);
+ NGHTTP2_INTERNAL_ERROR);
if (nghttp2_is_fatal(rv)) {
return rv;
}
@@ -6368,10 +6263,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
if (nghttp2_is_fatal(rv)) {
return rv;
}
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
}
session_inbound_frame_reset(session);
@@ -6597,10 +6488,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
if (nghttp2_is_fatal(rv)) {
return rv;
}
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
}
busy = 1;
@@ -6617,20 +6504,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
iframe->frame.data.padlen = (size_t)padlen;
- /* Empty DATA frame without END_STREAM flag set is
- suspicious. */
- if (iframe->payloadleft == 0 &&
- (iframe->frame.hd.flags & NGHTTP2_FLAG_END_STREAM) == 0) {
- rv = session_update_glitch_ratelim(session);
- if (rv != 0) {
- return rv;
- }
-
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
- }
-
iframe->state = NGHTTP2_IB_READ_DATA;
break;
@@ -6673,10 +6546,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
return rv;
}
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
data_readlen =
inbound_frame_effective_readlen(iframe, iframe->payloadleft, readlen);
@@ -6706,13 +6575,28 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
if (data_readlen > 0) {
if (session_enforce_http_messaging(session)) {
if (nghttp2_http_on_data_chunk(stream, (size_t)data_readlen) != 0) {
- rv = nghttp2_session_terminate_session(session,
- NGHTTP2_PROTOCOL_ERROR);
+ if (session->opt_flags & NGHTTP2_OPTMASK_NO_AUTO_WINDOW_UPDATE) {
+ /* Consume all data for connection immediately here */
+ rv = session_update_connection_consumed_size(
+ session, (size_t)data_readlen);
+
+ if (nghttp2_is_fatal(rv)) {
+ return rv;
+ }
+
+ if (iframe->state == NGHTTP2_IB_IGN_DATA) {
+ return (nghttp2_ssize)inlen;
+ }
+ }
+
+ rv = nghttp2_session_add_rst_stream(
+ session, iframe->frame.hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
if (nghttp2_is_fatal(rv)) {
return rv;
}
-
- return (nghttp2_ssize)inlen;
+ busy = 1;
+ iframe->state = NGHTTP2_IB_IGN_DATA;
+ break;
}
}
if (session->callbacks.on_data_chunk_recv_callback) {
@@ -6739,10 +6623,6 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
return rv;
}
- if (iframe->state == NGHTTP2_IB_IGN_ALL) {
- return (nghttp2_ssize)inlen;
- }
-
session_inbound_frame_reset(session);
break;
diff --git a/deps/nghttp2/lib/nghttp2_session.h b/deps/nghttp2/lib/nghttp2_session.h
index 25f300d23f1..419d23b5a96 100644
--- a/deps/nghttp2/lib/nghttp2_session.h
+++ b/deps/nghttp2/lib/nghttp2_session.h
@@ -106,10 +106,6 @@ typedef struct {
#define NGHTTP2_DEFAULT_STREAM_RESET_BURST 1000
#define NGHTTP2_DEFAULT_STREAM_RESET_RATE 33
-/* The default values for glitch rate limiter. */
-#define NGHTTP2_DEFAULT_GLITCH_BURST 1000
-#define NGHTTP2_DEFAULT_GLITCH_RATE 33
-
/* The default max number of CONTINUATION frames following an incoming
HEADER frame. */
#define NGHTTP2_DEFAULT_MAX_CONTINUATIONS 8
@@ -233,8 +229,6 @@ struct nghttp2_session {
/* Stream reset rate limiter. If receiving excessive amount of
stream resets, GOAWAY will be sent. */
nghttp2_ratelim stream_reset_ratelim;
- /* Rate limiter for all kinds of glitches. */
- nghttp2_ratelim glitch_ratelim;
/* Sequential number across all streams to process streams in
FIFO. */
uint64_t stream_seq;
diff --git a/deps/nghttp2/lib/nghttp2_submit.c b/deps/nghttp2/lib/nghttp2_submit.c
index 8a90f714e4a..5c6390fa759 100644
--- a/deps/nghttp2/lib/nghttp2_submit.c
+++ b/deps/nghttp2/lib/nghttp2_submit.c
@@ -487,7 +487,7 @@ int nghttp2_submit_altsvc(nghttp2_session *session, uint8_t flags,
return 0;
fail_item_malloc:
- nghttp2_mem_free(mem, buf);
+ free(buf);
return rv;
}
@@ -570,7 +570,7 @@ int nghttp2_submit_origin(nghttp2_session *session, uint8_t flags,
return 0;
fail_item_malloc:
- nghttp2_mem_free(mem, ov_copy);
+ free(ov_copy);
return rv;
}
@@ -642,7 +642,7 @@ int nghttp2_submit_priority_update(nghttp2_session *session, uint8_t flags,
return 0;
fail_item_malloc:
- nghttp2_mem_free(mem, buf);
+ free(buf);
return rv;
}
|
30a4283 to
70b0421
Compare
70b0421 to
2b81a7e
Compare
Is this issue with nghttp2 itself, or the way Node.js uses it?
|
|
IMO it’s a breaking change upstream (by definition), which we should not expect in a semver-minor. In terms of reporting, the only thing I’ve done is posting nghttp2/nghttp2#2480 (comment). In any case, if it is not reverted upstream, the only options we have is to adapt, float the revert, or stay behind. |
PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit reverts "Make error handling robust". Without this revert, we are getting timeouts, crashes, and different error codes in `parallel/test-http2-*`. Refs: nghttp2/nghttp2@7784fa9 PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2b81a7e to
408aba6
Compare
|
Landed in bd3a202...408aba6 |
PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit reverts "Make error handling robust". Without this revert, we are getting timeouts, crashes, and different error codes in `parallel/test-http2-*`. Refs: nghttp2/nghttp2@7784fa9 PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit reverts "Make error handling robust". Without this revert, we are getting timeouts, crashes, and different error codes in `parallel/test-http2-*`. Refs: nghttp2/nghttp2@7784fa9 PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit reverts "Make error handling robust". Without this revert, we are getting timeouts, crashes, and different error codes in `parallel/test-http2-*`. Refs: nghttp2/nghttp2@7784fa9 PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `25.1.0` -> `25.2.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v25.2.0`](https://github.com/nodejs/node/releases/tag/v25.2.0): 2025-11-11, Version 25.2.0 (Current), @​aduh95 [Compare Source](nodejs/node@v25.1.0...v25.2.0) ##### Notable Changes - \[[`a37c01e6a1`](nodejs/node@a37c01e6a1)] - **(SEMVER-MINOR)** **lib**: add options to util.deprecate (Rafael Gonzaga) [#​59982](nodejs/node#59982) - \[[`4fbb1ab101`](nodejs/node@4fbb1ab101)] - **lib**: throw from localStorage getter on missing storage path (René) [#​60351](nodejs/node#60351) - \[[`727560a96d`](nodejs/node@727560a96d)] - **(SEMVER-MINOR)** **module**: mark type stripping as stable (Marco Ippolito) [#​60600](nodejs/node#60600) - \[[`506b79e888`](nodejs/node@506b79e888)] - **(SEMVER-MINOR)** **net**: increase network family autoselection timeout to 500ms (Rod Vagg) [#​60334](nodejs/node#60334) - \[[`166c72ec02`](nodejs/node@166c72ec02)] - **(SEMVER-MINOR)** **node-api**: add napi\_create\_object\_with\_properties (Miguel Marcondes Filho) [#​59953](nodejs/node#59953) - \[[`399b340022`](nodejs/node@399b340022)] - **(SEMVER-MINOR)** **v8**: adding total\_allocated\_bytes to HeapStatistics (Caio Lima) [#​60573](nodejs/node#60573) ##### Commits - \[[`d5158a0a2d`](nodejs/node@d5158a0a2d)] - **benchmark**: focus on import.meta intialization in import-meta benchmark (Joyee Cheung) [#​60603](nodejs/node#60603) - \[[`26a5305fa9`](nodejs/node@26a5305fa9)] - **benchmark**: add per-suite setup option (Joyee Cheung) [#​60574](nodejs/node#60574) - \[[`4810e4b82d`](nodejs/node@4810e4b82d)] - **buffer**: speed up concat via TypedArray#set (Gürgün Dayıoğlu) [#​60399](nodejs/node#60399) - \[[`94a94a6b3a`](nodejs/node@94a94a6b3a)] - **console**: optimize single-string logging (Gürgün Dayıoğlu) [#​60422](nodejs/node#60422) - \[[`ad376c31db`](nodejs/node@ad376c31db)] - **crypto**: fix argument validation in crypto.timingSafeEqual fast path (Joyee Cheung) [#​60538](nodejs/node#60538) - \[[`dc38a45a55`](nodejs/node@dc38a45a55)] - **debugger**: fix event listener leak in the run command (Joyee Cheung) [#​60464](nodejs/node#60464) - \[[`a61e5d8e05`](nodejs/node@a61e5d8e05)] - **deps**: call OPENSSL\_free after ANS1\_STRING\_to\_UTF8 (Rafael Gonzaga) [#​60609](nodejs/node#60609) - \[[`51e5030afa`](nodejs/node@51e5030afa)] - **deps**: nghttp2: revert [`7784fa9`](nodejs/node@7784fa979d0b) (Antoine du Hamel) [#​59790](nodejs/node#59790) - \[[`eef838f499`](nodejs/node@eef838f499)] - **deps**: update nghttp2 to 1.67.1 (nodejs-github-bot) [#​59790](nodejs/node#59790) - \[[`13120a43d4`](nodejs/node@13120a43d4)] - **deps**: update simdjson to 4.1.0 (Node.js GitHub Bot) [#​60542](nodejs/node#60542) - \[[`6e1b23dab8`](nodejs/node@6e1b23dab8)] - **deps**: update corepack to 0.34.2 (Node.js GitHub Bot) [#​60550](nodejs/node#60550) - \[[`a02e05c486`](nodejs/node@a02e05c486)] - **deps**: update amaro to 1.1.5 (Node.js GitHub Bot) [#​60541](nodejs/node#60541) - \[[`b9ba3a7947`](nodejs/node@b9ba3a7947)] - **deps**: V8: backport [`fe81545`](nodejs/node@fe81545e6d14) (Caio Lima) [#​60429](nodejs/node#60429) - \[[`07bcd28494`](nodejs/node@07bcd28494)] - **deps**: V8: cherry-pick [`7ef6a00`](nodejs/node@7ef6a001762) (Xiao-Tao) [#​60259](nodejs/node#60259) - \[[`3e11658243`](nodejs/node@3e11658243)] - **doc**: update Collaborators list to reflect hybrist handle change (Antoine du Hamel) [#​60650](nodejs/node#60650) - \[[`b8e40e4d38`](nodejs/node@b8e40e4d38)] - **doc**: fix link in `--env-file=file` section (N. Bighetti) [#​60563](nodejs/node#60563) - \[[`9558c1c0df`](nodejs/node@9558c1c0df)] - **doc**: fix linter issues (Antoine du Hamel) [#​60636](nodejs/node#60636) - \[[`cdf70de563`](nodejs/node@cdf70de563)] - **doc**: add missing history entry for `sqlite.md` (Antoine du Hamel) [#​60607](nodejs/node#60607) - \[[`e3c5dcf1ea`](nodejs/node@e3c5dcf1ea)] - **doc**: correct values/references for buffer.kMaxLength (René) [#​60305](nodejs/node#60305) - \[[`a25d76c924`](nodejs/node@a25d76c924)] - **doc**: recommend events.once to manage 'close' event (Dan Fabulich) [#​60017](nodejs/node#60017) - \[[`795f32bf91`](nodejs/node@795f32bf91)] - **doc**: highlight module loading difference between import and require (Ajay A) [#​59815](nodejs/node#59815) - \[[`212775410b`](nodejs/node@212775410b)] - **doc**: add CJS code snippets in `sqlite.md` (Allon Murienik) [#​60395](nodejs/node#60395) - \[[`263c06096d`](nodejs/node@263c06096d)] - **doc**: fix typo in `process.unref` documentation (우혁) [#​59698](nodejs/node#59698) - \[[`356bdae408`](nodejs/node@356bdae408)] - **doc**: add some entries to `glossary.md` (Mohataseem Khan) [#​59277](nodejs/node#59277) - \[[`9632c398de`](nodejs/node@9632c398de)] - **doc**: improve agent.createConnection docs for http and https agents (JaeHo Jang) [#​58205](nodejs/node#58205) - \[[`f72880dbe3`](nodejs/node@f72880dbe3)] - **doc**: fix pseudo code in modules.md (chirsz) [#​57677](nodejs/node#57677) - \[[`a9c70cefe8`](nodejs/node@a9c70cefe8)] - **doc**: add missing variable in code snippet (Koushil Mankali) [#​55478](nodejs/node#55478) - \[[`2892d151d4`](nodejs/node@2892d151d4)] - **doc**: add missing word in `single-executable-applications.md` (Konstantin Tsabolov) [#​53864](nodejs/node#53864) - \[[`9c99ab6571`](nodejs/node@9c99ab6571)] - **doc**: fix typo in http.md (Michael Solomon) [#​59354](nodejs/node#59354) - \[[`3446cf375f`](nodejs/node@3446cf375f)] - **doc**: update devcontainer.json and add documentation (Joyee Cheung) [#​60472](nodejs/node#60472) - \[[`519c537875`](nodejs/node@519c537875)] - **doc**: add haramj as triager (Haram Jeong) [#​60348](nodejs/node#60348) - \[[`62889d7e99`](nodejs/node@62889d7e99)] - **doc**: clarify require(esm) description (dynst) [#​60520](nodejs/node#60520) - \[[`0b9ef68705`](nodejs/node@0b9ef68705)] - **doc**: instantiate resolver object (Donghoon Nam) [#​60476](nodejs/node#60476) - \[[`cd5c1ad29f`](nodejs/node@cd5c1ad29f)] - **doc**: correct module loading descriptions (Joyee Cheung) [#​60346](nodejs/node#60346) - \[[`74719dad7a`](nodejs/node@74719dad7a)] - **doc**: clarify Linux runtime requirements for >=25 (Joyee Cheung) [#​60484](nodejs/node#60484) - \[[`ca39540785`](nodejs/node@ca39540785)] - **doc**: clarify --use-system-ca support status (Joyee Cheung) [#​60340](nodejs/node#60340) - \[[`dbf204c714`](nodejs/node@dbf204c714)] - **doc,crypto**: link keygen to supported types (Filip Skokan) [#​60585](nodejs/node#60585) - \[[`3bcf86d56d`](nodejs/node@3bcf86d56d)] - **esm**: use sync loading/resolving on non-loader-hook thread (Joyee Cheung) [#​60380](nodejs/node#60380) - \[[`69b3d2c845`](nodejs/node@69b3d2c845)] - **http**: replace startsWith with strict equality (btea) [#​59394](nodejs/node#59394) - \[[`a38e2f5975`](nodejs/node@a38e2f5975)] - **http2**: add diagnostics channels for client stream request body (Darshan Sen) [#​60480](nodejs/node#60480) - \[[`c047e73a00`](nodejs/node@c047e73a00)] - **inspector**: inspect HTTP response body (Chengzhong Wu) [#​60572](nodejs/node#60572) - \[[`d2087bae92`](nodejs/node@d2087bae92)] - **inspector**: support inspecting HTTP/2 request and response bodies (Darshan Sen) [#​60483](nodejs/node#60483) - \[[`003121c475`](nodejs/node@003121c475)] - **inspector**: fix crash when receiving non json message (Shima Ryuhei) [#​60388](nodejs/node#60388) - \[[`a37c01e6a1`](nodejs/node@a37c01e6a1)] - **(SEMVER-MINOR)** **lib**: add options to util.deprecate (Rafael Gonzaga) [#​59982](nodejs/node#59982) - \[[`219d2e978d`](nodejs/node@219d2e978d)] - **lib**: replace global SharedArrayBuffer constructor with bound method (Renegade334) [#​60497](nodejs/node#60497) - \[[`4fbb1ab101`](nodejs/node@4fbb1ab101)] - **lib**: throw from localStorage getter on missing storage path (René) [#​60351](nodejs/node#60351) - \[[`ca8934f44d`](nodejs/node@ca8934f44d)] - **meta**: bump cachix/install-nix-action from 31.6.1 to 31.8.2 (dependabot\[bot]) [#​60534](nodejs/node#60534) - \[[`166490230a`](nodejs/node@166490230a)] - **meta**: bump github/codeql-action from 3.30.5 to 4.31.2 (dependabot\[bot]) [#​60533](nodejs/node#60533) - \[[`b722236a12`](nodejs/node@b722236a12)] - **meta**: bump actions/download-artifact from 5.0.0 to 6.0.0 (dependabot\[bot]) [#​60532](nodejs/node#60532) - \[[`3314b0bc60`](nodejs/node@3314b0bc60)] - **meta**: bump actions/upload-artifact from 4.6.2 to 5.0.0 (dependabot\[bot]) [#​60531](nodejs/node#60531) - \[[`d1d9891feb`](nodejs/node@d1d9891feb)] - **meta**: bump actions/github-script from 7.0.1 to 8.0.0 (dependabot\[bot]) [#​60530](nodejs/node#60530) - \[[`995596a34f`](nodejs/node@995596a34f)] - **meta**: bump actions/setup-node from 5.0.0 to 6.0.0 (dependabot\[bot]) [#​60529](nodejs/node#60529) - \[[`b60157a0fe`](nodejs/node@b60157a0fe)] - **meta**: bump actions/stale from 10.0.0 to 10.1.0 (dependabot\[bot]) [#​60528](nodejs/node#60528) - \[[`07fa6c9081`](nodejs/node@07fa6c9081)] - **meta**: call `create-release-post.yml` post release (Aviv Keller) [#​60366](nodejs/node#60366) - \[[`727560a96d`](nodejs/node@727560a96d)] - **(SEMVER-MINOR)** **module**: mark type stripping as stable (Marco Ippolito) [#​60600](nodejs/node#60600) - \[[`506b79e888`](nodejs/node@506b79e888)] - **(SEMVER-MINOR)** **net**: increase network family autoselection timeout to 500ms (Rod Vagg) [#​60334](nodejs/node#60334) - \[[`166c72ec02`](nodejs/node@166c72ec02)] - **(SEMVER-MINOR)** **node-api**: add napi\_create\_object\_with\_properties (Miguel Marcondes Filho) [#​59953](nodejs/node#59953) - \[[`6ab83cf979`](nodejs/node@6ab83cf979)] - **node-api**: use local files for instanceof test (Vladimir Morozov) [#​60190](nodejs/node#60190) - \[[`3671851879`](nodejs/node@3671851879)] - **perf\_hooks**: move non-standard performance properties to perf\_hooks (Chengzhong Wu) [#​60370](nodejs/node#60370) - \[[`6ddee4a7ed`](nodejs/node@6ddee4a7ed)] - **repl**: fix pasting after moving the cursor to the left (Ruben Bridgewater) [#​60470](nodejs/node#60470) - \[[`edc3033905`](nodejs/node@edc3033905)] - **sqlite,doc**: fix StatementSync section (Edy Silva) [#​60474](nodejs/node#60474) - \[[`e9b68e60d4`](nodejs/node@e9b68e60d4)] - **src**: move import.meta initializer to native land (Joyee Cheung) [#​60603](nodejs/node#60603) - \[[`0ebf839a4f`](nodejs/node@0ebf839a4f)] - **src**: use CP\_UTF8 for wide file names on win32 (Fedor Indutny) [#​60575](nodejs/node#60575) - \[[`a31ad37714`](nodejs/node@a31ad37714)] - **src**: show original file name in FileHandle GC close errors (Anna Henningsen) [#​60593](nodejs/node#60593) - \[[`a6c221324b`](nodejs/node@a6c221324b)] - **src**: avoid C strings in more C++ exception throws (Anna Henningsen) [#​60592](nodejs/node#60592) - \[[`fdff838ce3`](nodejs/node@fdff838ce3)] - **src**: add internal binding for constructing SharedArrayBuffers (Renegade334) [#​60497](nodejs/node#60497) - \[[`4385b0b65f`](nodejs/node@4385b0b65f)] - **src**: move `napi_addon_register_func` to `node_api_types.h` (Anna Henningsen) [#​60512](nodejs/node#60512) - \[[`de78da7887`](nodejs/node@de78da7887)] - **src**: move Node-API version detection to where it is used (Anna Henningsen) [#​60512](nodejs/node#60512) - \[[`b606d46c3f`](nodejs/node@b606d46c3f)] - **src**: remove unconditional NAPI\_EXPERIMENTAL in node.h (Chengzhong Wu) [#​60345](nodejs/node#60345) - \[[`5941341889`](nodejs/node@5941341889)] - **src**: clean up generic counter implementation (Anna Henningsen) [#​60447](nodejs/node#60447) - \[[`7015f30e62`](nodejs/node@7015f30e62)] - **src**: add enum handle for ToStringHelper + formatting (Burkov Egor) [#​56829](nodejs/node#56829) - \[[`39dfcbad6e`](nodejs/node@39dfcbad6e)] - **stream**: don't try to read more if reading (Robert Nagy) [#​60454](nodejs/node#60454) - \[[`ee333c9177`](nodejs/node@ee333c9177)] - **test**: deflake test-perf-hooks-timerify-histogram-sync (Joyee Cheung) [#​60639](nodejs/node#60639) - \[[`f0d81c91e7`](nodejs/node@f0d81c91e7)] - **test**: apply a delay to `watch-mode-kill-signal` tests (Joyee Cheung) [#​60610](nodejs/node#60610) - \[[`68791e2ccc`](nodejs/node@68791e2ccc)] - **test**: async iife in repl (Tony Gorez) [#​44878](nodejs/node#44878) - \[[`c4eb9c3383`](nodejs/node@c4eb9c3383)] - **test**: parallelize sea tests when there's enough disk space (Joyee Cheung) [#​60604](nodejs/node#60604) - \[[`be8c4172d9`](nodejs/node@be8c4172d9)] - **test**: only show overridden env in child process failures (Joyee Cheung) [#​60556](nodejs/node#60556) - \[[`8cae858f88`](nodejs/node@8cae858f88)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60498](nodejs/node#60498) - \[[`759d69331e`](nodejs/node@759d69331e)] - **test**: ensure assertions are reachable in `test/es-module` (Antoine du Hamel) [#​60501](nodejs/node#60501) - \[[`6aaf18c333`](nodejs/node@6aaf18c333)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60485](nodejs/node#60485) - \[[`bc41acf087`](nodejs/node@bc41acf087)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60500](nodejs/node#60500) - \[[`22fd621daf`](nodejs/node@22fd621daf)] - **test**: split test-perf-hooks-timerify (Joyee Cheung) [#​60568](nodejs/node#60568) - \[[`5efe4f722e`](nodejs/node@5efe4f722e)] - **test**: add more logs to test-esm-loader-hooks-inspect-wait (Joyee Cheung) [#​60466](nodejs/node#60466) - \[[`2a57268f34`](nodejs/node@2a57268f34)] - **test**: mark stringbytes-external-exceed-max tests as flaky on AIX (Joyee Cheung) [#​60565](nodejs/node#60565) - \[[`2c199f7f61`](nodejs/node@2c199f7f61)] - **test**: split test-esm-wasm.js (Joyee Cheung) [#​60491](nodejs/node#60491) - \[[`bc8f7db5bb`](nodejs/node@bc8f7db5bb)] - **test**: correct conditional secure heap flags test (Shelley Vohr) [#​60385](nodejs/node#60385) - \[[`3bf42a5dd3`](nodejs/node@3bf42a5dd3)] - **test**: spin longer on flaky platforms for test-worker-prof (Joyee Cheung) [#​60492](nodejs/node#60492) - \[[`eca6227e7e`](nodejs/node@eca6227e7e)] - **test**: ensure assertions are reachable in `test/internet` (Antoine du Hamel) [#​60513](nodejs/node#60513) - \[[`313983453b`](nodejs/node@313983453b)] - **test**: fix flaky test-watch-mode-kill-signal-\* (Joyee Cheung) [#​60443](nodejs/node#60443) - \[[`ccc26377b5`](nodejs/node@ccc26377b5)] - **test**: capture stack trace in debugger timeout errors (Joyee Cheung) [#​60457](nodejs/node#60457) - \[[`12e9213a24`](nodejs/node@12e9213a24)] - **test**: ensure assertions are reachable in `test/sequential` (Antoine du Hamel) [#​60412](nodejs/node#60412) - \[[`781a2661de`](nodejs/node@781a2661de)] - **test**: ensure assertions are reachable in more folders (Antoine du Hamel) [#​60411](nodejs/node#60411) - \[[`1e979e6eb7`](nodejs/node@1e979e6eb7)] - **test**: split test-runner-watch-mode (Joyee Cheung) [#​60391](nodejs/node#60391) - \[[`8c31cbb99b`](nodejs/node@8c31cbb99b)] - **test**: move test-runner-watch-mode helper into common (Joyee Cheung) [#​60391](nodejs/node#60391) - \[[`c94c6555cc`](nodejs/node@c94c6555cc)] - **test,crypto**: handle a few more BoringSSL tests (Shelley Vohr) [#​59030](nodejs/node#59030) - \[[`fd63c27444`](nodejs/node@fd63c27444)] - **test,crypto**: update x448 and ed448 expectation when on boringssl (Shelley Vohr) [#​60387](nodejs/node#60387) - \[[`bf0de92446`](nodejs/node@bf0de92446)] - **tls**: fix leak on invalid protocol method (Shelley Vohr) [#​60427](nodejs/node#60427) - \[[`7e8373b378`](nodejs/node@7e8373b378)] - **tools**: replace invalid expression in dependabot config (Riddhi) [#​60649](nodejs/node#60649) - \[[`ac08760547`](nodejs/node@ac08760547)] - **tools**: extract Nix dependency lists to separate files (Antoine du Hamel) [#​60495](nodejs/node#60495) - \[[`ae91a6cc3a`](nodejs/node@ae91a6cc3a)] - **tools**: only add test reporter args when node:test is used (Joyee Cheung) [#​60551](nodejs/node#60551) - \[[`97ed560222`](nodejs/node@97ed560222)] - **tools**: skip unaffected GHA jobs for changes in `test/internet` (Antoine du Hamel) [#​60517](nodejs/node#60517) - \[[`44ca97b404`](nodejs/node@44ca97b404)] - **tools**: fix update-icu script (Michaël Zasso) [#​60521](nodejs/node#60521) - \[[`07b0b5a5ba`](nodejs/node@07b0b5a5ba)] - **tools**: fix linter for semver-major release proposals (Antoine du Hamel) [#​60481](nodejs/node#60481) - \[[`97d74224c3`](nodejs/node@97d74224c3)] - **tools**: fix failing release-proposal linter for LTS transitions (Antoine du Hamel) [#​60465](nodejs/node#60465) - \[[`019af5bc27`](nodejs/node@019af5bc27)] - **tools**: skip running test-shared on deps changes (Antoine du Hamel) [#​60433](nodejs/node#60433) - \[[`3ec9764151`](nodejs/node@3ec9764151)] - **tools**: pin OpenSSL to 3.5.4 on test-shared workflow (Antoine du Hamel) [#​60428](nodejs/node#60428) - \[[`fe2d6d44d4`](nodejs/node@fe2d6d44d4)] - **tools**: remove undici from daily wpt.fyi job (Filip Skokan) [#​60444](nodejs/node#60444) - \[[`d09ba98398`](nodejs/node@d09ba98398)] - **tools**: document that nixpkgs updates should not be backported (Antoine du Hamel) [#​60431](nodejs/node#60431) - \[[`7fc99319e7`](nodejs/node@7fc99319e7)] - **tools**: do not use short hashes for deps versioning to avoid collision (Antoine du Hamel) [#​60407](nodejs/node#60407) - \[[`815edb0c3a`](nodejs/node@815edb0c3a)] - **tools,doc**: update JavaScript primitive types to match MDN Web Docs (JustApple) [#​60581](nodejs/node#60581) - \[[`6877139a2d`](nodejs/node@6877139a2d)] - **util**: fix stylize of special properties in inspect (Ge Gao) [#​60479](nodejs/node#60479) - \[[`399b340022`](nodejs/node@399b340022)] - **(SEMVER-MINOR)** **v8**: adding total\_allocated\_bytes to HeapStatistics (Caio Lima) [#​60573](nodejs/node#60573) - \[[`d64795b318`](nodejs/node@d64795b318)] - **watch**: fix interaction with multiple env files (Marco Ippolito) [#​60605](nodejs/node#60605) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
This commit reverts "Make error handling robust". Without this revert, we are getting timeouts, crashes, and different error codes in `parallel/test-http2-*`. Refs: nghttp2/nghttp2@7784fa9 PR-URL: #59790 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This is an automated update of nghttp2 to 1.67.1.