http2 broken

洪志道 hongzhidao at gmail.com
Wed Jul 11 17:24:53 UTC 2018


Get it, I'll try it, thank you again.

On Thu, Jul 12, 2018 at 1:02 AM Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
>
> On Wed, Jul 11, 2018 at 08:56:56PM +0800, 洪志道 wrote:
>
> > But there are still some clients use the old version.
> > Is it a way to be compatible with it?
> > Or other suggestions?
> > @Maxim Dounin <mdounin at mdounin.ru>
>
> As I already wrote in ticket #1397, we can try introducing a
> workaround in nginx, but I'm not convinced it worth the effort and,
> more importantly, associated downsides for non-broken clients.
>
> # HG changeset patch
> # User Maxim Dounin <mdounin at mdounin.ru>
> # Date 1531328359 -10800
> #      Wed Jul 11 19:59:19 2018 +0300
> # Node ID f44e74d331885dce8682d2a9802eb707be7ae86f
> # Parent  54683f650cbdcd73f7f8d845c843295978da5a85
> HTTP/2: workaround for clients which fail on table size updates.
>
> There are clients which cannot handle HPACK's dynamic table size updates
> as added in 12cadc4669a7 (1.13.6).  Notably, old versions of OkHttp library
> are known to fail on it (ticket #1397).
>
> This change makes it possible to work with such clients by only sending
> dynamic table size updates in response to SETTINGS_HEADER_TABLE_SIZE.  As
> a downside, clients which do not use SETTINGS_HEADER_TABLE_SIZE will
> continue to maintain default 4k table.
>
> diff --git a/src/http/v2/ngx_http_v2.c b/src/http/v2/ngx_http_v2.c
> --- a/src/http/v2/ngx_http_v2.c
> +++ b/src/http/v2/ngx_http_v2.c
> @@ -270,8 +270,6 @@ ngx_http_v2_init(ngx_event_t *rev)
>
>      h2c->frame_size = NGX_HTTP_V2_DEFAULT_FRAME_SIZE;
>
> -    h2c->table_update = 1;
> -
>      h2scf = ngx_http_get_module_srv_conf(hc->conf_ctx,
> ngx_http_v2_module);
>
>      h2c->concurrent_pushes = h2scf->concurrent_pushes;
> @@ -2075,6 +2073,11 @@ ngx_http_v2_state_settings_params(ngx_ht
>              h2c->concurrent_pushes = ngx_min(value,
> h2scf->concurrent_pushes);
>              break;
>
> +        case NGX_HTTP_V2_HEADER_TABLE_SIZE_SETTING:
> +
> +            h2c->table_update = 1;
> +            break;
> +
>          default:
>              break;
>          }
>
> --
> Maxim Dounin
> http://mdounin.ru/
> _______________________________________________
> nginx-devel mailing list
> nginx-devel at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20180712/65631757/attachment.html>


More information about the nginx-devel mailing list