You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2015/10/08 12:03:30 UTC

svn commit: r1707468 - in /httpd/httpd/trunk/modules/http2: h2_util.c h2_version.h

Author: icing
Date: Thu Oct  8 10:03:30 2015
New Revision: 1707468

URL: http://svn.apache.org/viewvc?rev=1707468&view=rev
Log:
fix for empty responses with nghttp2 v1.3.x, bump version to 1.0.0

Modified:
    httpd/httpd/trunk/modules/http2/h2_util.c
    httpd/httpd/trunk/modules/http2/h2_version.h

Modified: httpd/httpd/trunk/modules/http2/h2_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_util.c?rev=1707468&r1=1707467&r2=1707468&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_util.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_util.c Thu Oct  8 10:03:30 2015
@@ -484,19 +484,38 @@ int h2_util_has_flush_or_eos(apr_bucket_
 
 int h2_util_has_eos(apr_bucket_brigade *bb, apr_size_t len)
 {
-    apr_bucket *b, *end;
+    apr_bucket *b;
     
-    apr_status_t status = last_not_included(bb, len, 0, 0, &end);
-    if (status != APR_SUCCESS) {
-        return status;
+    if (len == 0) {
+        /* special case: this is only true, if there are only meta
+         * and an eos bucket in the brigade head.
+         */
+        for (b = APR_BRIGADE_FIRST(bb);
+             b != APR_BRIGADE_SENTINEL(bb);
+             b = APR_BUCKET_NEXT(b))
+        {
+            if (!APR_BUCKET_IS_METADATA(b) && b->length != 0) {
+                break;
+            }
+            else if (APR_BUCKET_IS_EOS(b)) {
+                return 1;
+            }
+        }
     }
-    
-    for (b = APR_BRIGADE_FIRST(bb);
-         b != APR_BRIGADE_SENTINEL(bb) && b != end;
-         b = APR_BUCKET_NEXT(b))
-    {
-        if (APR_BUCKET_IS_EOS(b)) {
-            return 1;
+    else {
+        apr_bucket *end;
+        apr_status_t status = last_not_included(bb, len, 0, 0, &end);
+        if (status != APR_SUCCESS) {
+            return status;
+        }
+        
+        for (b = APR_BRIGADE_FIRST(bb);
+             b != APR_BRIGADE_SENTINEL(bb) && b != end;
+             b = APR_BUCKET_NEXT(b))
+        {
+            if (APR_BUCKET_IS_EOS(b)) {
+                return 1;
+            }
         }
     }
     return 0;

Modified: httpd/httpd/trunk/modules/http2/h2_version.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_version.h?rev=1707468&r1=1707467&r2=1707468&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_version.h (original)
+++ httpd/httpd/trunk/modules/http2/h2_version.h Thu Oct  8 10:03:30 2015
@@ -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 */



Re: svn commit: r1707468 - in /httpd/httpd/trunk/modules/http2: h2_util.c h2_version.h

Posted by Stefan Eissing <st...@greenbytes.de>.
All green from my side now.

//Stefan

> Am 08.10.2015 um 12:50 schrieb Jim Jagielski <ji...@jagunet.com>:
> 
> No rush... :)
> 
>> On Oct 8, 2015, at 6:45 AM, Stefan Eissing <st...@greenbytes.de> wrote:
>> 
>> Jim, give me a moment. Yann's code reviewing skill are just too good...
>> 
>> //Stefan
>> 
>>> Am 08.10.2015 um 12:44 schrieb Jim Jagielski <ji...@jaguNET.com>:
>>> 
>>> I am guessing this should be backported to 2.4.17, right?
>>> 
>>>> On Oct 8, 2015, at 6:03 AM, icing@apache.org wrote:
>>>> 
>>>> Author: icing
>>>> Date: Thu Oct  8 10:03:30 2015
>>>> New Revision: 1707468
>>>> 
>>>> URL: http://svn.apache.org/viewvc?rev=1707468&view=rev
>>>> Log:
>>>> fix for empty responses with nghttp2 v1.3.x, bump version to 1.0.0
>>>> 
>>>> Modified:
>>>> httpd/httpd/trunk/modules/http2/h2_util.c
>>>> httpd/httpd/trunk/modules/http2/h2_version.h
>>>> 
>>>> Modified: httpd/httpd/trunk/modules/http2/h2_util.c
>>>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_util.c?rev=1707468&r1=1707467&r2=1707468&view=diff
>>>> ==============================================================================
>>>> --- httpd/httpd/trunk/modules/http2/h2_util.c (original)
>>>> +++ httpd/httpd/trunk/modules/http2/h2_util.c Thu Oct  8 10:03:30 2015
>>>> @@ -484,19 +484,38 @@ int h2_util_has_flush_or_eos(apr_bucket_
>>>> 
>>>> int h2_util_has_eos(apr_bucket_brigade *bb, apr_size_t len)
>>>> {
>>>> -    apr_bucket *b, *end;
>>>> +    apr_bucket *b;
>>>> 
>>>> -    apr_status_t status = last_not_included(bb, len, 0, 0, &end);
>>>> -    if (status != APR_SUCCESS) {
>>>> -        return status;
>>>> +    if (len == 0) {
>>>> +        /* special case: this is only true, if there are only meta
>>>> +         * and an eos bucket in the brigade head.
>>>> +         */
>>>> +        for (b = APR_BRIGADE_FIRST(bb);
>>>> +             b != APR_BRIGADE_SENTINEL(bb);
>>>> +             b = APR_BUCKET_NEXT(b))
>>>> +        {
>>>> +            if (!APR_BUCKET_IS_METADATA(b) && b->length != 0) {
>>>> +                break;
>>>> +            }
>>>> +            else if (APR_BUCKET_IS_EOS(b)) {
>>>> +                return 1;
>>>> +            }
>>>> +        }
>>>>  }
>>>> -    
>>>> -    for (b = APR_BRIGADE_FIRST(bb);
>>>> -         b != APR_BRIGADE_SENTINEL(bb) && b != end;
>>>> -         b = APR_BUCKET_NEXT(b))
>>>> -    {
>>>> -        if (APR_BUCKET_IS_EOS(b)) {
>>>> -            return 1;
>>>> +    else {
>>>> +        apr_bucket *end;
>>>> +        apr_status_t status = last_not_included(bb, len, 0, 0, &end);
>>>> +        if (status != APR_SUCCESS) {
>>>> +            return status;
>>>> +        }
>>>> +        
>>>> +        for (b = APR_BRIGADE_FIRST(bb);
>>>> +             b != APR_BRIGADE_SENTINEL(bb) && b != end;
>>>> +             b = APR_BUCKET_NEXT(b))
>>>> +        {
>>>> +            if (APR_BUCKET_IS_EOS(b)) {
>>>> +                return 1;
>>>> +            }
>>>>      }
>>>>  }
>>>>  return 0;
>>>> 
>>>> Modified: httpd/httpd/trunk/modules/http2/h2_version.h
>>>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_version.h?rev=1707468&r1=1707467&r2=1707468&view=diff
>>>> ==============================================================================
>>>> --- httpd/httpd/trunk/modules/http2/h2_version.h (original)
>>>> +++ httpd/httpd/trunk/modules/http2/h2_version.h Thu Oct  8 10:03:30 2015
>>>> @@ -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 */
>>>> 
>>>> 
>>> 
>> 
> 


Re: svn commit: r1707468 - in /httpd/httpd/trunk/modules/http2: h2_util.c h2_version.h

Posted by Jim Jagielski <ji...@jaguNET.com>.
No rush... :)

> On Oct 8, 2015, at 6:45 AM, Stefan Eissing <st...@greenbytes.de> wrote:
> 
> Jim, give me a moment. Yann's code reviewing skill are just too good...
> 
> //Stefan
> 
>> Am 08.10.2015 um 12:44 schrieb Jim Jagielski <ji...@jaguNET.com>:
>> 
>> I am guessing this should be backported to 2.4.17, right?
>> 
>>> On Oct 8, 2015, at 6:03 AM, icing@apache.org wrote:
>>> 
>>> Author: icing
>>> Date: Thu Oct  8 10:03:30 2015
>>> New Revision: 1707468
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1707468&view=rev
>>> Log:
>>> fix for empty responses with nghttp2 v1.3.x, bump version to 1.0.0
>>> 
>>> Modified:
>>>  httpd/httpd/trunk/modules/http2/h2_util.c
>>>  httpd/httpd/trunk/modules/http2/h2_version.h
>>> 
>>> Modified: httpd/httpd/trunk/modules/http2/h2_util.c
>>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_util.c?rev=1707468&r1=1707467&r2=1707468&view=diff
>>> ==============================================================================
>>> --- httpd/httpd/trunk/modules/http2/h2_util.c (original)
>>> +++ httpd/httpd/trunk/modules/http2/h2_util.c Thu Oct  8 10:03:30 2015
>>> @@ -484,19 +484,38 @@ int h2_util_has_flush_or_eos(apr_bucket_
>>> 
>>> int h2_util_has_eos(apr_bucket_brigade *bb, apr_size_t len)
>>> {
>>> -    apr_bucket *b, *end;
>>> +    apr_bucket *b;
>>> 
>>> -    apr_status_t status = last_not_included(bb, len, 0, 0, &end);
>>> -    if (status != APR_SUCCESS) {
>>> -        return status;
>>> +    if (len == 0) {
>>> +        /* special case: this is only true, if there are only meta
>>> +         * and an eos bucket in the brigade head.
>>> +         */
>>> +        for (b = APR_BRIGADE_FIRST(bb);
>>> +             b != APR_BRIGADE_SENTINEL(bb);
>>> +             b = APR_BUCKET_NEXT(b))
>>> +        {
>>> +            if (!APR_BUCKET_IS_METADATA(b) && b->length != 0) {
>>> +                break;
>>> +            }
>>> +            else if (APR_BUCKET_IS_EOS(b)) {
>>> +                return 1;
>>> +            }
>>> +        }
>>>   }
>>> -    
>>> -    for (b = APR_BRIGADE_FIRST(bb);
>>> -         b != APR_BRIGADE_SENTINEL(bb) && b != end;
>>> -         b = APR_BUCKET_NEXT(b))
>>> -    {
>>> -        if (APR_BUCKET_IS_EOS(b)) {
>>> -            return 1;
>>> +    else {
>>> +        apr_bucket *end;
>>> +        apr_status_t status = last_not_included(bb, len, 0, 0, &end);
>>> +        if (status != APR_SUCCESS) {
>>> +            return status;
>>> +        }
>>> +        
>>> +        for (b = APR_BRIGADE_FIRST(bb);
>>> +             b != APR_BRIGADE_SENTINEL(bb) && b != end;
>>> +             b = APR_BUCKET_NEXT(b))
>>> +        {
>>> +            if (APR_BUCKET_IS_EOS(b)) {
>>> +                return 1;
>>> +            }
>>>       }
>>>   }
>>>   return 0;
>>> 
>>> Modified: httpd/httpd/trunk/modules/http2/h2_version.h
>>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_version.h?rev=1707468&r1=1707467&r2=1707468&view=diff
>>> ==============================================================================
>>> --- httpd/httpd/trunk/modules/http2/h2_version.h (original)
>>> +++ httpd/httpd/trunk/modules/http2/h2_version.h Thu Oct  8 10:03:30 2015
>>> @@ -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 */
>>> 
>>> 
>> 
> 


Re: svn commit: r1707468 - in /httpd/httpd/trunk/modules/http2: h2_util.c h2_version.h

Posted by Stefan Eissing <st...@greenbytes.de>.
Jim, give me a moment. Yann's code reviewing skill are just too good...

//Stefan

> Am 08.10.2015 um 12:44 schrieb Jim Jagielski <ji...@jaguNET.com>:
> 
> I am guessing this should be backported to 2.4.17, right?
> 
>> On Oct 8, 2015, at 6:03 AM, icing@apache.org wrote:
>> 
>> Author: icing
>> Date: Thu Oct  8 10:03:30 2015
>> New Revision: 1707468
>> 
>> URL: http://svn.apache.org/viewvc?rev=1707468&view=rev
>> Log:
>> fix for empty responses with nghttp2 v1.3.x, bump version to 1.0.0
>> 
>> Modified:
>>   httpd/httpd/trunk/modules/http2/h2_util.c
>>   httpd/httpd/trunk/modules/http2/h2_version.h
>> 
>> Modified: httpd/httpd/trunk/modules/http2/h2_util.c
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_util.c?rev=1707468&r1=1707467&r2=1707468&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http2/h2_util.c (original)
>> +++ httpd/httpd/trunk/modules/http2/h2_util.c Thu Oct  8 10:03:30 2015
>> @@ -484,19 +484,38 @@ int h2_util_has_flush_or_eos(apr_bucket_
>> 
>> int h2_util_has_eos(apr_bucket_brigade *bb, apr_size_t len)
>> {
>> -    apr_bucket *b, *end;
>> +    apr_bucket *b;
>> 
>> -    apr_status_t status = last_not_included(bb, len, 0, 0, &end);
>> -    if (status != APR_SUCCESS) {
>> -        return status;
>> +    if (len == 0) {
>> +        /* special case: this is only true, if there are only meta
>> +         * and an eos bucket in the brigade head.
>> +         */
>> +        for (b = APR_BRIGADE_FIRST(bb);
>> +             b != APR_BRIGADE_SENTINEL(bb);
>> +             b = APR_BUCKET_NEXT(b))
>> +        {
>> +            if (!APR_BUCKET_IS_METADATA(b) && b->length != 0) {
>> +                break;
>> +            }
>> +            else if (APR_BUCKET_IS_EOS(b)) {
>> +                return 1;
>> +            }
>> +        }
>>    }
>> -    
>> -    for (b = APR_BRIGADE_FIRST(bb);
>> -         b != APR_BRIGADE_SENTINEL(bb) && b != end;
>> -         b = APR_BUCKET_NEXT(b))
>> -    {
>> -        if (APR_BUCKET_IS_EOS(b)) {
>> -            return 1;
>> +    else {
>> +        apr_bucket *end;
>> +        apr_status_t status = last_not_included(bb, len, 0, 0, &end);
>> +        if (status != APR_SUCCESS) {
>> +            return status;
>> +        }
>> +        
>> +        for (b = APR_BRIGADE_FIRST(bb);
>> +             b != APR_BRIGADE_SENTINEL(bb) && b != end;
>> +             b = APR_BUCKET_NEXT(b))
>> +        {
>> +            if (APR_BUCKET_IS_EOS(b)) {
>> +                return 1;
>> +            }
>>        }
>>    }
>>    return 0;
>> 
>> Modified: httpd/httpd/trunk/modules/http2/h2_version.h
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_version.h?rev=1707468&r1=1707467&r2=1707468&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http2/h2_version.h (original)
>> +++ httpd/httpd/trunk/modules/http2/h2_version.h Thu Oct  8 10:03:30 2015
>> @@ -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 */
>> 
>> 
> 


Re: svn commit: r1707468 - in /httpd/httpd/trunk/modules/http2: h2_util.c h2_version.h

Posted by Jim Jagielski <ji...@jaguNET.com>.
I am guessing this should be backported to 2.4.17, right?

> On Oct 8, 2015, at 6:03 AM, icing@apache.org wrote:
> 
> Author: icing
> Date: Thu Oct  8 10:03:30 2015
> New Revision: 1707468
> 
> URL: http://svn.apache.org/viewvc?rev=1707468&view=rev
> Log:
> fix for empty responses with nghttp2 v1.3.x, bump version to 1.0.0
> 
> Modified:
>    httpd/httpd/trunk/modules/http2/h2_util.c
>    httpd/httpd/trunk/modules/http2/h2_version.h
> 
> Modified: httpd/httpd/trunk/modules/http2/h2_util.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_util.c?rev=1707468&r1=1707467&r2=1707468&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/http2/h2_util.c (original)
> +++ httpd/httpd/trunk/modules/http2/h2_util.c Thu Oct  8 10:03:30 2015
> @@ -484,19 +484,38 @@ int h2_util_has_flush_or_eos(apr_bucket_
> 
> int h2_util_has_eos(apr_bucket_brigade *bb, apr_size_t len)
> {
> -    apr_bucket *b, *end;
> +    apr_bucket *b;
> 
> -    apr_status_t status = last_not_included(bb, len, 0, 0, &end);
> -    if (status != APR_SUCCESS) {
> -        return status;
> +    if (len == 0) {
> +        /* special case: this is only true, if there are only meta
> +         * and an eos bucket in the brigade head.
> +         */
> +        for (b = APR_BRIGADE_FIRST(bb);
> +             b != APR_BRIGADE_SENTINEL(bb);
> +             b = APR_BUCKET_NEXT(b))
> +        {
> +            if (!APR_BUCKET_IS_METADATA(b) && b->length != 0) {
> +                break;
> +            }
> +            else if (APR_BUCKET_IS_EOS(b)) {
> +                return 1;
> +            }
> +        }
>     }
> -    
> -    for (b = APR_BRIGADE_FIRST(bb);
> -         b != APR_BRIGADE_SENTINEL(bb) && b != end;
> -         b = APR_BUCKET_NEXT(b))
> -    {
> -        if (APR_BUCKET_IS_EOS(b)) {
> -            return 1;
> +    else {
> +        apr_bucket *end;
> +        apr_status_t status = last_not_included(bb, len, 0, 0, &end);
> +        if (status != APR_SUCCESS) {
> +            return status;
> +        }
> +        
> +        for (b = APR_BRIGADE_FIRST(bb);
> +             b != APR_BRIGADE_SENTINEL(bb) && b != end;
> +             b = APR_BUCKET_NEXT(b))
> +        {
> +            if (APR_BUCKET_IS_EOS(b)) {
> +                return 1;
> +            }
>         }
>     }
>     return 0;
> 
> Modified: httpd/httpd/trunk/modules/http2/h2_version.h
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_version.h?rev=1707468&r1=1707467&r2=1707468&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/http2/h2_version.h (original)
> +++ httpd/httpd/trunk/modules/http2/h2_version.h Thu Oct  8 10:03:30 2015
> @@ -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 */
> 
>