From 244cb5ea196fd8f75b5abcf9e71f32d12203a47a Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Thu, 8 Oct 2015 12:16:25 +0000 Subject: [PATCH] backport of trunk:r1707497, fixes nghttp 1.3.x interop, bump version to 1.0.0 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1707511 13f79535-47bb-0310-9956-ffa450edef68 --- modules/http2/h2_util.c | 34 ++++++++++++++++++++++++++++------ modules/http2/h2_version.h | 4 ++-- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/modules/http2/h2_util.c b/modules/http2/h2_util.c index c0c383797b..9d141be93b 100644 --- a/modules/http2/h2_util.c +++ b/modules/http2/h2_util.c @@ -539,14 +539,36 @@ apr_status_t h2_util_bb_avail(apr_bucket_brigade *bb, apr_size_t *plen, int *peos) { apr_status_t status; - /* test read to determine available length */ apr_off_t blen = 0; - status = apr_brigade_length(bb, 0, &blen); - if (blen < (apr_off_t)*plen) { - *plen = blen; + + /* test read to determine available length */ + status = apr_brigade_length(bb, 1, &blen); + if (status != APR_SUCCESS) { + return status; } - *peos = h2_util_has_eos(bb, *plen); - return status; + else if (blen == 0) { + /* empty brigade, does it have an EOS bucket somwhere? */ + *plen = 0; + *peos = h2_util_has_eos(bb, 0); + } + else if (blen > 0) { + /* data in the brigade, limit the length returned. Check for EOS + * bucket only if we indicate data. This is required since plen == 0 + * means "the whole brigade" for h2_util_hash_eos() + */ + if (blen < (apr_off_t)*plen) { + *plen = blen; + } + *peos = (*plen > 0)? h2_util_has_eos(bb, *plen) : 0; + } + else if (blen < 0) { + /* famous SHOULD NOT HAPPEN, sinc we told apr_brigade_length to readall + */ + *plen = 0; + *peos = h2_util_has_eos(bb, 0); + return APR_EINVAL; + } + return APR_SUCCESS; } apr_status_t h2_util_bb_readx(apr_bucket_brigade *bb, diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index 7ed711ffed..7a03865c87 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -20,7 +20,7 @@ * @macro * Version number of the h2 module as c string */ -#define MOD_HTTP2_VERSION "0.9.9" +#define MOD_HTTP2_VERSION "1.0.0" /** * @macro @@ -28,7 +28,7 @@ * 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 MOD_HTTP2_VERSION_NUM 0x000909 +#define MOD_HTTP2_VERSION_NUM 0x010000 #endif /* mod_h2_h2_version_h */ -- 2.50.1