]> granicus.if.org Git - apache/commitdiff
improved fix for EOS checking on zero length read, bump to 1.0.0
authorStefan Eissing <icing@apache.org>
Thu, 8 Oct 2015 11:24:11 +0000 (11:24 +0000)
committerStefan Eissing <icing@apache.org>
Thu, 8 Oct 2015 11:24:11 +0000 (11:24 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1707497 13f79535-47bb-0310-9956-ffa450edef68

modules/http2/h2_util.c
modules/http2/h2_version.h

index c0c383797b466dce2720b53ecd1b383f6d4f2f24..9d141be93bf160d5d83d8fca278dd69ba990cc10 100644 (file)
@@ -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, 
index 7ed711ffed064404bde7e299cb7ca304b6293727..7a03865c87c2ed20a558d0f231738964ca4a8662 100644 (file)
@@ -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 */