NGINX HPACK decode failure

Sergey Kandaurov pluknet at nginx.com
Mon Oct 19 12:12:28 UTC 2015


On Oct 18, 2015, at 8:21 PM, Jesse Wilson <jesse at swank.ca> wrote:
> I’m attempting to diagnose a bug report against OkHttp, the HTTP/2 client for Android that I help to maintain.
> 
> 
> Some of my users have run into problems making HTTP/2 requests against NGINX. I believe the problem is that NGINX’s HPACK decoder can’t decode the following:
> 
> 020347455404232f726573742f76312f73697465732f37333335303032312f70
> 6f7374732f363039313501187075626c69632d6170692e776f72647072657373
> 2e636f6d060568747470730f00057574662d380f2b0c6f6b687474702f322e35
> 2e30
> 
> It fails, and reports a PROTOCOL_ERROR to the client. Instead, it should have decoded to this:
> 
> :method: GET
> :path: /rest/v1/sites/73350021/posts/60915
> :authority: 
> public-api.wordpress.com
> 
> :scheme: https
> accept-charset: utf-8
> user-agent: okhttp/2.5.0
> 
> Please confirm. Unfortunately, I can’t tell you the particulars of the version of NGINX deployed on wordpress.com that triggers this.

Thanks for reporting.
This looks like a bug, we’re working on it.
Meanwhile, you might want to try this patch:

diff -r 6e1de800ac5a src/http/v2/ngx_http_v2.c
--- a/src/http/v2/ngx_http_v2.c	Fri Oct 16 18:49:17 2015 +0300
+++ b/src/http/v2/ngx_http_v2.c	Mon Oct 19 15:01:52 2015 +0300
@@ -1252,7 +1252,7 @@ ngx_http_v2_state_header_block(ngx_http_
 
     } else {
         /* literal header field without indexing */
-        prefix = ngx_http_v2_prefix(3);
+        prefix = ngx_http_v2_prefix(4);
     }
 
     value = ngx_http_v2_parse_int(h2c, &pos, end, prefix);

-- 
Sergey Kandaurov



More information about the nginx mailing list