Commit 2bbe2c79 authored by Stefan Eissing's avatar Stefan Eissing
Browse files

backport of mod_http2 v1.3.2 minus event conn-status fixup

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1733259 13f79535-47bb-0310-9956-ffa450edef68
parent 2f678caf
Loading
Loading
Loading
Loading
+55 −6
Original line number Diff line number Diff line
@@ -2,6 +2,60 @@

Changes with Apache 2.4.19

  *) mod_http2: Accept-Encoding is, when present on the initiating request, 
     added to push promises. This lets compressed content work in pushes.
     by the client. [Stefan Eissing]

  *) mod_http2: fixed possible read after free when streams were cancelled early
     by the client. [Stefan Eissing]

  *) mod_http2: fixed possible deadlock during connection shutdown. Thanks to 
     @FrankStolle for reporting and getting the necessary data.
     [Stefan Eissing]

  *) mod_http2: fixed apr_uint64_t formatting in a log statement to user proper 
     APR def, thanks to @Sp1l.
     
  *) mod_http2: number of worker threads allowed to a connection is adjusting 
     dynamically. Starting with 4, the number is doubled when streams can be 
     served without block on http/2 connection flow. The number is halfed, when
     the server has to wait on client flow control grants. 
     This can happen with a maximum frequency of 5 times per second. 
     When a connection occupies too many workers, repeatable requests 
     (GET/HEAD/OPTIONS) are cancelled and placed back in the queue. Should that 
     not suffice and a stream is busy longer than the server timeout, the 
     connection will be aborted with error code ENHANCE_YOUR_CALM.
     This does *not* limit the number of streams a client may open, rather the
     number of server threads a connection might use.
     [Stefan Eissing]
  
  *) mod_http2: allowing link header to specify multiple "rel" values, 
     space-separated inside a quoted string. Prohibiting push when Link 
     parameter "nopush" is present.
     [Stefan Eissing]

  *) mod_http2: reworked connection state handling. Idle connections accept a
     GOAWAY from the client without further reply. Otherwise the
     module makes a best effort to send one last GOAWAY to the client.
     
  *) mod_http2: the values from standard directives Timeout and KeepAliveTimeout
     properly are applied to http/2 connections.
     [Stefan Eissing]

  *) mod_http2: idle connections are returned to async mpms. new hook
     "pre_close_connection" used to send GOAWAY frame when not already done.
     Setting event mpm server config "by hand" for the main connection to
     the correct negotiated server.
     [Stefan Eissing]

  *) mod_http2: keep-alive blocking reads are done with 1 second timeouts to
     check for MPM stopping. Will announce early GOAWAY and finish processing
     open streams, then close.
     [Stefan Eissing]

  *) mod_http2: bytes read/written on slave connections are reported via the
     optional mod_logio functions. Fixes PR 58871.

  *) mod_ssl: Add SSLOCSPProxyURL to add the possibility to do all queries
     to OCSP responders through a HTTP proxy. [Ruediger Pluem]

@@ -50,7 +104,7 @@ Changes with Apache 2.4.19
     be inherited by virtual hosts that define a CustomLog.
     [Edward Lu]

  *) mod_http2: connection how keep a "push diary" where hashes of already
  *) mod_http2: connections how keep a "push diary" where hashes of already
     pushed resources are kept. See directive H2PushDiarySize for managing this.
     Push diaries can be initialized by clients via the "Cache-Digest" request
     header. This carries a base64url encoded. compressed Golomb set as described
@@ -81,11 +135,6 @@ Changes with Apache 2.4.19
     when available for request.
     [Stefan Eissing]

  *) mod_http2: new config directives and the implementation behind
     them: H2Timeout, H2KeepAliveTimeout, H2StreamTimeout. Documentation in
     the http2 manual.
     [Stefan Eissing]

  *) mod_http2: fixed bug in input window size calculation by moving chunked
     request body encoding into later stage of processing. Fixes PR 58825.
     [Stefan Eissing]
+2 −2
Original line number Diff line number Diff line
@@ -388,9 +388,9 @@ SET(mod_http2_extra_sources
  modules/http2/h2_mplx.c            modules/http2/h2_push.c
  modules/http2/h2_request.c         modules/http2/h2_response.c
  modules/http2/h2_session.c         modules/http2/h2_stream.c 
  modules/http2/h2_stream_set.c      modules/http2/h2_switch.c
  modules/http2/h2_switch.c
  modules/http2/h2_task.c            modules/http2/h2_task_input.c
  modules/http2/h2_task_output.c     modules/http2/h2_task_queue.c
  modules/http2/h2_task_output.c     modules/http2/h2_int_queue.c
  modules/http2/h2_util.c            modules/http2/h2_worker.c
  modules/http2/h2_workers.c
)
+16 −101
Original line number Diff line number Diff line
#
# This Makefile requires the environment var NGH2SRC
# pointing to the base directory of nghttp2 source tree.
#

#
# Declare the sub-directories to be built here
#
@@ -19,6 +14,7 @@ include $(AP_WORK)/build/NWGNUhead.inc

#
# build this level's files

#
# Make sure all needed macro's are defined
#
@@ -28,13 +24,6 @@ include $(AP_WORK)/build/NWGNUhead.inc
# INCDIRS
#
XINCDIRS	+= \
			$(APR)/include \
			$(APRUTIL)/include \
			$(SRC)/include \
			$(NGH2SRC)/lib/ \
			$(NGH2SRC)/lib/includes \
			$(SERVER)/mpm/NetWare \
			$(NWOS) \
			$(EOLIST)

#
@@ -47,14 +36,12 @@ XCFLAGS += \
# These defines will come after DEFINES
#
XDEFINES	+= \
			-DHAVE_CONFIG_H \
			$(EOLIST)

#
# These flags will be added to the link.opt file
#
XLFLAGS		+= \
			-L$(OBJDIR) \
			$(EOLIST)

#
@@ -108,19 +95,19 @@ endif
# This is used by the link 'name' directive to name the nlm.  If left blank
# TARGET_nlm (see below) will be used.
#
NLM_NAME	= mod_http2
NLM_NAME	=

#
# This is used by the link '-desc ' directive.
# If left blank, NLM_NAME will be used.
#
NLM_DESCRIPTION	= Apache $(VERSION_STR) HTTP2 Support module (w/ NGHTTP2 Lib)
NLM_DESCRIPTION	=

#
# This is used by the '-threadname' directive.  If left blank,
# NLM_NAME Thread will be used.
#
NLM_THREAD_NAME	= $(NLM_NAME)
NLM_THREAD_NAME	=

#
# If this is specified, it will override VERSION value in
@@ -131,7 +118,8 @@ NLM_VERSION =
#
# If this is specified, it will override the default of 64K
#
NLM_STACK_SIZE	= 65536
NLM_STACK_SIZE	=


#
# If this is specified it will be used by the link '-entry' directive
@@ -149,7 +137,7 @@ NLM_EXIT_SYM =
NLM_CHECK_SYM	=

#
# If this is specified it will be used by the link '-flags' directive
# If these are specified it will be used by the link '-flags' directive
#
NLM_FLAGS	=

@@ -160,37 +148,32 @@ NLM_FLAGS =
#
XDCDATA		=

#
# Declare all target files (you must add your files here)
#

#
# If there is an NLM target, put it here
#
TARGET_nlm = \
	$(OBJDIR)/$(NLM_NAME).nlm \
	$(OBJDIR)/mod_http2.nlm \
	$(OBJDIR)/mod_http2.nlm \
	$(EOLIST)

#
# If there is an LIB target, put it here
#
TARGET_lib = \
	$(OBJDIR)/nghttp2.lib \
	$(EOLIST)

#
# These are the OBJ files needed to create the NLM target above.
# Paths must all use the '/' character
#
FILES_nlm_objs := $(sort $(patsubst %.c,$(OBJDIR)/%.o,$(wildcard *.c)))
FILES_nlm_objs = \
	$(EOLIST)

#
# These are the LIB files needed to create the NLM target above.
# These will be added as a library command in the link.opt file.
#
FILES_nlm_libs = \
	$(PRELUDE) \
	$(OBJDIR)/nghttp2.lib \
	$(EOLIST)

#
@@ -198,8 +181,6 @@ FILES_nlm_libs = \
# These will be added as a module command in the link.opt file.
#
FILES_nlm_modules = \
	Libc \
	Apache2 \
	$(EOLIST)

#
@@ -221,28 +202,26 @@ FILE_nlm_copyright =
# Any additional imports go here
#
FILES_nlm_Ximports = \
	@libc.imp \
	@aprlib.imp \
	@httpd.imp \
	$(EOLIST)

#
# Any symbols exported to here
#
FILES_nlm_exports = \
	http2_module \
	$(EOLIST)

#
# These are the OBJ files needed to create the LIB target above.
# Paths must all use the '/' character
#
FILES_lib_objs := $(sort $(patsubst $(NGH2SRC)/lib/%.c,$(OBJDIR)/%.o,$(wildcard $(NGH2SRC)/lib/*.c)))
FILES_lib_objs = \
	$(EOLIST)

#
# implement targets and dependancies (leave this section alone)
#

libs :: $(OBJDIR) $(NGH2SRC)/lib/config.h $(TARGET_lib)
libs :: $(OBJDIR) $(TARGET_lib)

nlms :: libs $(TARGET_nlm)

@@ -253,73 +232,9 @@ nlms :: libs $(TARGET_nlm)
install :: nlms FORCE
	$(call COPY,$(OBJDIR)/*.nlm, $(INSTALLBASE)/modules/)

clean ::
	$(call DEL,$(NGH2SRC)/lib/config.h)
#
# Any specialized rules here
#
vpath %.c $(NGH2SRC)/lib

$(NGH2SRC)/lib/config.h : NWGNUmakefile
	@echo $(DL)GEN  $@$(DL)
	@echo $(DL)/* For NetWare target.$(DL) > $@
	@echo $(DL)** Do not edit - created by Make!$(DL) >> $@
	@echo $(DL)*/$(DL) >> $@
	@echo $(DL)#ifndef NGH2_CONFIG_H$(DL) >> $@
	@echo $(DL)#define NGH2_CONFIG_H$(DL) >> $@
	@echo #define HAVE_ARPA_INET_H 1 >> $@
	@echo #define HAVE_CHOWN 1 >> $@
	@echo #define HAVE_DECL_STRERROR_R 1 >> $@
	@echo #define HAVE_DLFCN_H 1 >> $@
	@echo #define HAVE_DUP2 1 >> $@
	@echo #define HAVE_FCNTL_H 1 >> $@
	@echo #define HAVE_GETCWD 1 >> $@
	@echo #define HAVE_INTTYPES_H 1 >> $@
	@echo #define HAVE_LIMITS_H 1 >> $@
	@echo #define HAVE_LOCALTIME_R 1 >> $@
	@echo #define HAVE_MALLOC 1 >> $@
	@echo #define HAVE_MEMCHR 1 >> $@
	@echo #define HAVE_MEMMOVE 1 >> $@
	@echo #define HAVE_MEMORY_H 1 >> $@
	@echo #define HAVE_MEMSET 1 >> $@
	@echo #define HAVE_NETDB_H 1 >> $@
	@echo #define HAVE_NETINET_IN_H 1 >> $@
	@echo #define HAVE_PTRDIFF_T 1 >> $@
	@echo #define HAVE_PWD_H 1 >> $@
	@echo #define HAVE_SOCKET 1 >> $@
	@echo #define HAVE_SQRT 1 >> $@
	@echo #define HAVE_STDDEF_H 1 >> $@
	@echo #define HAVE_STDINT_H 1 >> $@
	@echo #define HAVE_STDLIB_H 1 >> $@
	@echo #define HAVE_STRCHR 1 >> $@
	@echo #define HAVE_STRDUP 1 >> $@
	@echo #define HAVE_STRERROR 1 >> $@
	@echo #define HAVE_STRERROR_R 1 >> $@
	@echo #define HAVE_STRINGS_H 1 >> $@
	@echo #define HAVE_STRING_H 1 >> $@
	@echo #define HAVE_STRSTR 1 >> $@
	@echo #define HAVE_STRTOL 1 >> $@
	@echo #define HAVE_STRTOUL 1 >> $@
	@echo #define HAVE_SYSLOG_H 1 >> $@
	@echo #define HAVE_SYS_SOCKET_H 1 >> $@
	@echo #define HAVE_SYS_STAT_H 1 >> $@
	@echo #define HAVE_SYS_TIME_H 1 >> $@
	@echo #define HAVE_SYS_TYPES_H 1 >> $@
	@echo #define HAVE_TIME_H 1 >> $@
	@echo #define HAVE_UNISTD_H 1 >> $@

	@echo #define SIZEOF_INT_P 4 >> $@
	@echo #define STDC_HEADERS 1 >> $@
	@echo #define STRERROR_R_CHAR_P 4 >> $@

# Hint to compiler a function parameter is not used
	@echo #define _U_ >> $@

	@echo #ifndef __cplusplus >> $@
	@echo #define inline __inline >> $@
	@echo #endif >> $@

	@echo $(DL)#endif /* NGH2_CONFIG_H */$(DL) >> $@

#
# Include the 'tail' makefile that has targets that depend on variables defined
+360 −0
Original line number Diff line number Diff line
#
# This Makefile requires the environment var NGH2SRC
# pointing to the base directory of nghttp2 source tree.
#

#
# Declare the sub-directories to be built here
#

SUBDIRS = \
	$(EOLIST)

#
# Get the 'head' of the build environment.  This includes default targets and
# paths to tools
#

include $(AP_WORK)/build/NWGNUhead.inc

#
# build this level's files
#
# Make sure all needed macro's are defined
#

#
# These directories will be at the beginning of the include list, followed by
# INCDIRS
#
XINCDIRS	+= \
			$(APR)/include \
			$(APRUTIL)/include \
			$(SRC)/include \
			$(NGH2SRC)/lib/ \
			$(NGH2SRC)/lib/includes \
			$(SERVER)/mpm/NetWare \
			$(STDMOD)/ssl \
			$(NWOS) \
			$(EOLIST)

#
# These flags will come after CFLAGS
#
XCFLAGS		+= \
			$(EOLIST)

#
# These defines will come after DEFINES
#
XDEFINES	+= \
			-DHAVE_CONFIG_H \
			$(EOLIST)

#
# These flags will be added to the link.opt file
#
XLFLAGS		+= \
			-L$(OBJDIR) \
			$(EOLIST)

#
# These values will be appended to the correct variables based on the value of
# RELEASE
#
ifeq "$(RELEASE)" "debug"
XINCDIRS	+= \
			$(EOLIST)

XCFLAGS		+= \
			$(EOLIST)

XDEFINES	+= \
			$(EOLIST)

XLFLAGS		+= \
			$(EOLIST)
endif

ifeq "$(RELEASE)" "noopt"
XINCDIRS	+= \
			$(EOLIST)

XCFLAGS		+= \
			$(EOLIST)

XDEFINES	+= \
			$(EOLIST)

XLFLAGS		+= \
			$(EOLIST)
endif

ifeq "$(RELEASE)" "release"
XINCDIRS	+= \
			$(EOLIST)

XCFLAGS		+= \
			$(EOLIST)

XDEFINES	+= \
			$(EOLIST)

XLFLAGS		+= \
			$(EOLIST)
endif

#
# These are used by the link target if an NLM is being generated
# This is used by the link 'name' directive to name the nlm.  If left blank
# TARGET_nlm (see below) will be used.
#
NLM_NAME	= mod_http2

#
# This is used by the link '-desc ' directive.
# If left blank, NLM_NAME will be used.
#
NLM_DESCRIPTION	= Apache $(VERSION_STR) HTTP2 Support module (w/ NGHTTP2 Lib)

#
# This is used by the '-threadname' directive.  If left blank,
# NLM_NAME Thread will be used.
#
NLM_THREAD_NAME	= $(NLM_NAME)

#
# If this is specified, it will override VERSION value in
# $(AP_WORK)/build/NWGNUenvironment.inc
#
NLM_VERSION	=

#
# If this is specified, it will override the default of 64K
#
NLM_STACK_SIZE	= 65536

#
# If this is specified it will be used by the link '-entry' directive
#
NLM_ENTRY_SYM	=

#
# If this is specified it will be used by the link '-exit' directive
#
NLM_EXIT_SYM	=

#
# If this is specified it will be used by the link '-check' directive
#
NLM_CHECK_SYM	=

#
# If this is specified it will be used by the link '-flags' directive
#
NLM_FLAGS	=

#
# If this is specified it will be linked in with the XDCData option in the def
# file instead of the default of $(NWOS)/apache.xdc.  XDCData can be disabled
# by setting APACHE_UNIPROC in the environment
#
XDCDATA		=

#
# Declare all target files (you must add your files here)
#

#
# If there is an NLM target, put it here
#
TARGET_nlm = \
	$(OBJDIR)/$(NLM_NAME).nlm \
	$(EOLIST)

#
# If there is an LIB target, put it here
#
TARGET_lib = \
	$(OBJDIR)/nghttp2.lib \
	$(EOLIST)

#
# These are the OBJ files needed to create the NLM target above.
# Paths must all use the '/' character
#
FILES_nlm_objs = \
	$(OBJDIR)/h2_alt_svc.o \
	$(OBJDIR)/h2_bucket_eoc.o \
	$(OBJDIR)/h2_bucket_eos.o \
	$(OBJDIR)/h2_config.o \
	$(OBJDIR)/h2_conn.o \
	$(OBJDIR)/h2_conn_io.o \
	$(OBJDIR)/h2_ctx.o \
	$(OBJDIR)/h2_filter.o \
	$(OBJDIR)/h2_from_h1.o \
	$(OBJDIR)/h2_h2.o \
	$(OBJDIR)/h2_int_queue.o \
	$(OBJDIR)/h2_io.o \
	$(OBJDIR)/h2_io_set.o \
	$(OBJDIR)/h2_mplx.o \
	$(OBJDIR)/h2_push.o \
	$(OBJDIR)/h2_request.o \
	$(OBJDIR)/h2_response.o \
	$(OBJDIR)/h2_session.o \
	$(OBJDIR)/h2_stream.o \
	$(OBJDIR)/h2_switch.o \
	$(OBJDIR)/h2_task.o \
	$(OBJDIR)/h2_task_input.o \
	$(OBJDIR)/h2_task_output.o \
	$(OBJDIR)/h2_util.o \
	$(OBJDIR)/h2_worker.o \
	$(OBJDIR)/h2_workers.o \
	$(OBJDIR)/mod_http2.o \
	$(EOLIST)

#
# These are the LIB files needed to create the NLM target above.
# These will be added as a library command in the link.opt file.
#
FILES_nlm_libs = \
	$(PRELUDE) \
	$(OBJDIR)/nghttp2.lib \
	$(EOLIST)

#
# These are the modules that the above NLM target depends on to load.
# These will be added as a module command in the link.opt file.
#
FILES_nlm_modules = \
	Libc \
	Apache2 \
	$(EOLIST)

#
# If the nlm has a msg file, put it's path here
#
FILE_nlm_msg =

#
# If the nlm has a hlp file put it's path here
#
FILE_nlm_hlp =

#
# If this is specified, it will override $(NWOS)\copyright.txt.
#
FILE_nlm_copyright =

#
# Any additional imports go here
#
FILES_nlm_Ximports = \
	@libc.imp \
	@aprlib.imp \
	@httpd.imp \
	$(EOLIST)

#
# Any symbols exported to here
#
FILES_nlm_exports = \
	http2_module \
	$(EOLIST)

#
# These are the OBJ files needed to create the LIB target above.
# Paths must all use the '/' character
#
FILES_lib_objs := $(sort $(patsubst $(NGH2SRC)/lib/%.c,$(OBJDIR)/%.o,$(wildcard $(NGH2SRC)/lib/*.c)))
#
# implement targets and dependancies (leave this section alone)
#

libs :: $(OBJDIR) $(NGH2SRC)/lib/config.h $(TARGET_lib)

nlms :: libs $(TARGET_nlm)

#
# Updated this target to create necessary directories and copy files to the
# correct place.  (See $(AP_WORK)/build/NWGNUhead.inc for examples)
#
install :: nlms FORCE
	$(call COPY,$(OBJDIR)/*.nlm,        $(INSTALLBASE)/modules/)

clean ::
	$(call DEL,$(NGH2SRC)/lib/config.h)
#
# Any specialized rules here
#
vpath %.c $(NGH2SRC)/lib

$(NGH2SRC)/lib/config.h : NWGNUmakefile
	@echo $(DL)GEN  $@$(DL)
	@echo $(DL)/* For NetWare target.$(DL) > $@
	@echo $(DL)** Do not edit - created by Make!$(DL) >> $@
	@echo $(DL)*/$(DL) >> $@
	@echo $(DL)#ifndef NGH2_CONFIG_H$(DL) >> $@
	@echo $(DL)#define NGH2_CONFIG_H$(DL) >> $@
	@echo #define HAVE_ARPA_INET_H 1 >> $@
	@echo #define HAVE_CHOWN 1 >> $@
	@echo #define HAVE_DECL_STRERROR_R 1 >> $@
	@echo #define HAVE_DLFCN_H 1 >> $@
	@echo #define HAVE_DUP2 1 >> $@
	@echo #define HAVE_FCNTL_H 1 >> $@
	@echo #define HAVE_GETCWD 1 >> $@
	@echo #define HAVE_INTTYPES_H 1 >> $@
	@echo #define HAVE_LIMITS_H 1 >> $@
	@echo #define HAVE_LOCALTIME_R 1 >> $@
	@echo #define HAVE_MALLOC 1 >> $@
	@echo #define HAVE_MEMCHR 1 >> $@
	@echo #define HAVE_MEMMOVE 1 >> $@
	@echo #define HAVE_MEMORY_H 1 >> $@
	@echo #define HAVE_MEMSET 1 >> $@
	@echo #define HAVE_NETDB_H 1 >> $@
	@echo #define HAVE_NETINET_IN_H 1 >> $@
	@echo #define HAVE_PTRDIFF_T 1 >> $@
	@echo #define HAVE_PWD_H 1 >> $@
	@echo #define HAVE_SOCKET 1 >> $@
	@echo #define HAVE_SQRT 1 >> $@
	@echo #define HAVE_STDDEF_H 1 >> $@
	@echo #define HAVE_STDINT_H 1 >> $@
	@echo #define HAVE_STDLIB_H 1 >> $@
	@echo #define HAVE_STRCHR 1 >> $@
	@echo #define HAVE_STRDUP 1 >> $@
	@echo #define HAVE_STRERROR 1 >> $@
	@echo #define HAVE_STRERROR_R 1 >> $@
	@echo #define HAVE_STRINGS_H 1 >> $@
	@echo #define HAVE_STRING_H 1 >> $@
	@echo #define HAVE_STRSTR 1 >> $@
	@echo #define HAVE_STRTOL 1 >> $@
	@echo #define HAVE_STRTOUL 1 >> $@
	@echo #define HAVE_SYSLOG_H 1 >> $@
	@echo #define HAVE_SYS_SOCKET_H 1 >> $@
	@echo #define HAVE_SYS_STAT_H 1 >> $@
	@echo #define HAVE_SYS_TIME_H 1 >> $@
	@echo #define HAVE_SYS_TYPES_H 1 >> $@
	@echo #define HAVE_TIME_H 1 >> $@
	@echo #define HAVE_UNISTD_H 1 >> $@

	@echo #define SIZEOF_INT_P 4 >> $@
	@echo #define STDC_HEADERS 1 >> $@
	@echo #define STRERROR_R_CHAR_P 4 >> $@

# Hint to compiler a function parameter is not used
	@echo #define _U_ >> $@

	@echo #ifndef __cplusplus >> $@
	@echo #define inline __inline >> $@
	@echo #endif >> $@

	@echo $(DL)#endif /* NGH2_CONFIG_H */$(DL) >> $@

#
# Include the 'tail' makefile that has targets that depend on variables defined
# in this makefile
#

include $(APBUILD)/NWGNUtail.inc

+10 −9
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ h2_ctx.lo dnl
h2_filter.lo dnl
h2_from_h1.lo dnl
h2_h2.lo dnl
h2_int_queue.lo dnl
h2_io.lo dnl
h2_io_set.lo dnl
h2_mplx.lo dnl
@@ -37,12 +38,10 @@ h2_request.lo dnl
h2_response.lo dnl
h2_session.lo dnl
h2_stream.lo dnl
h2_stream_set.lo dnl
h2_switch.lo dnl
h2_task.lo dnl
h2_task_input.lo dnl
h2_task_output.lo dnl
h2_task_queue.lo dnl
h2_util.lo dnl
h2_worker.lo dnl
h2_workers.lo dnl
@@ -156,8 +155,10 @@ AC_DEFUN([APACHE_CHECK_NGHTTP2],[
        AC_MSG_WARN([nghttp2 library is unusable])
      fi
dnl # nghttp2 >= 1.3.0: access to stream weights
      AC_CHECK_FUNCS([nghttp2_stream_get_weight], 
        [APR_ADDTO(MOD_CPPFLAGS, ["-DH2_NG2_STREAM_API"])], [])
      AC_CHECK_FUNCS([nghttp2_stream_get_weight], [], [liberrors="yes"])
      if test "x$liberrors" != "x"; then
        AC_MSG_WARN([nghttp2 version >= 1.3.0 is required])
      fi
dnl # nghttp2 >= 1.5.0: changing stream priorities
      AC_CHECK_FUNCS([nghttp2_session_change_stream_priority], 
        [APR_ADDTO(MOD_CPPFLAGS, ["-DH2_NG2_CHANGE_PRIO"])], [])
@@ -181,10 +182,10 @@ APACHE_MODULE(http2, [HTTP/2 protocol handling in addition to HTTP protocol
handling. Implemented by mod_http2. This module requires a libnghttp2 installation. 
See --with-nghttp2 on how to manage non-standard locations. This module
is usually linked shared and requires loading. ], $http2_objs, , most, [
#    APACHE_CHECK_OPENSSL
#    if test "$ac_cv_openssl" = "yes" ; then
#        APR_ADDTO(MOD_CPPFLAGS, ["-DH2_OPENSSL"])
#    fi
    APACHE_CHECK_OPENSSL
    if test "$ac_cv_openssl" = "yes" ; then
        APR_ADDTO(MOD_CPPFLAGS, ["-DH2_OPENSSL"])
    fi

    APACHE_CHECK_NGHTTP2
    if test "$ac_cv_nghttp2" = "yes" ; then
@@ -199,7 +200,7 @@ is usually linked shared and requires loading. ], $http2_objs, , most, [
])

# Ensure that other modules can pick up mod_http2.h
APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])
# APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])

dnl #  end of module specific part
APACHE_MODPATH_FINISH
Loading