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,
* @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
* 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 */