<div dir="ltr"><div class="gmail_extra">Hi, <span style="font-size:12.8px">Valentin.</span></div><div class="gmail_extra"><br></div><div class="gmail_extra">Please confirm again, thanks.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">diff -r 5e05118678af src/http/modules/ngx_http_ssl_module.c</div><div class="gmail_extra">--- a/src/http/modules/ngx_http_ssl_module.c<span class="gmail-Apple-tab-span" style="white-space:pre">       </span>Mon May 29 23:33:38 2017 +0300</div><div class="gmail_extra">+++ b/src/http/modules/ngx_http_ssl_module.c<span class="gmail-Apple-tab-span" style="white-space:pre">       </span>Fri Jun 09 07:15:50 2017 -0400</div><div class="gmail_extra">@@ -234,6 +234,13 @@</div><div class="gmail_extra">       offsetof(ngx_http_ssl_srv_conf_t, stapling_verify),</div><div class="gmail_extra">       NULL },</div><div class="gmail_extra"><br></div><div class="gmail_extra">+    { ngx_string("ssl_h2"),</div><div class="gmail_extra">+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_FLAG,</div><div class="gmail_extra">+      ngx_http_ssl_enable,</div><div class="gmail_extra">+      NGX_HTTP_SRV_CONF_OFFSET,</div><div class="gmail_extra">+      offsetof(ngx_http_ssl_srv_conf_t, h2),</div><div class="gmail_extra">+      NULL },</div><div class="gmail_extra">+</div><div class="gmail_extra">       ngx_null_command</div><div class="gmail_extra"> };</div><div class="gmail_extra"><br></div><div class="gmail_extra">@@ -343,16 +350,17 @@</div><div class="gmail_extra">     unsigned char *outlen, const unsigned char *in, unsigned int inlen,</div><div class="gmail_extra">     void *arg)</div><div class="gmail_extra"> {</div><div class="gmail_extra">-    unsigned int            srvlen;</div><div class="gmail_extra">-    unsigned char          *srv;</div><div class="gmail_extra">+    unsigned int               srvlen;</div><div class="gmail_extra">+    unsigned char             *srv;</div><div class="gmail_extra"> #if (NGX_DEBUG)</div><div class="gmail_extra">-    unsigned int            i;</div><div class="gmail_extra">+    unsigned int               i;</div><div class="gmail_extra"> #endif</div><div class="gmail_extra"> #if (NGX_HTTP_V2)</div><div class="gmail_extra">-    ngx_http_connection_t  *hc;</div><div class="gmail_extra">+    ngx_http_connection_t     *hc;</div><div class="gmail_extra">+    ngx_http_ssl_srv_conf_t   *sscf;</div><div class="gmail_extra"> #endif</div><div class="gmail_extra"> #if (NGX_HTTP_V2 || NGX_DEBUG)</div><div class="gmail_extra">-    ngx_connection_t       *c;</div><div class="gmail_extra">+    ngx_connection_t          *c;</div><div class="gmail_extra"><br></div><div class="gmail_extra">     c = ngx_ssl_get_connection(ssl_conn);</div><div class="gmail_extra"> #endif</div><div class="gmail_extra">@@ -367,8 +375,9 @@</div><div class="gmail_extra"><br></div><div class="gmail_extra"> #if (NGX_HTTP_V2)</div><div class="gmail_extra">     hc = c->data;</div><div class="gmail_extra">+    sscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_ssl_module);</div><div class="gmail_extra"><br></div><div class="gmail_extra">-    if (hc->addr_conf->http2) {</div><div class="gmail_extra">+    if (hc->addr_conf->http2 && sscf->h2) {</div><div class="gmail_extra">         srv =</div><div class="gmail_extra">            (unsigned char *) NGX_HTTP_V2_ALPN_ADVERTISE NGX_HTTP_NPN_ADVERTISE;</div><div class="gmail_extra">         srvlen = sizeof(NGX_HTTP_V2_ALPN_ADVERTISE NGX_HTTP_NPN_ADVERTISE) - 1;</div><div class="gmail_extra">@@ -411,11 +420,13 @@</div><div class="gmail_extra"><br></div><div class="gmail_extra"> #if (NGX_HTTP_V2)</div><div class="gmail_extra">     {</div><div class="gmail_extra">-    ngx_http_connection_t  *hc;</div><div class="gmail_extra">+    ngx_http_connection_t     *hc;</div><div class="gmail_extra">+    ngx_http_ssl_srv_conf_t   *sscf;</div><div class="gmail_extra"><br></div><div class="gmail_extra">     hc = c->data;</div><div class="gmail_extra">+    sscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_ssl_module);</div><div class="gmail_extra"><br></div><div class="gmail_extra">-    if (hc->addr_conf->http2) {</div><div class="gmail_extra">+    if (hc->addr_conf->http2 && sscf->h2) {</div><div class="gmail_extra">         *out =</div><div class="gmail_extra">             (unsigned char *) NGX_HTTP_V2_NPN_ADVERTISE NGX_HTTP_NPN_ADVERTISE;</div><div class="gmail_extra">         *outlen = sizeof(NGX_HTTP_V2_NPN_ADVERTISE NGX_HTTP_NPN_ADVERTISE) - 1;</div><div class="gmail_extra">@@ -555,6 +566,7 @@</div><div class="gmail_extra">     sscf->session_ticket_keys = NGX_CONF_UNSET_PTR;</div><div class="gmail_extra">     sscf->stapling = NGX_CONF_UNSET;</div><div class="gmail_extra">     sscf->stapling_verify = NGX_CONF_UNSET;</div><div class="gmail_extra">+    sscf->h2 = NGX_CONF_UNSET;</div><div class="gmail_extra"><br></div><div class="gmail_extra">     return sscf;</div><div class="gmail_extra"> }</div><div class="gmail_extra">@@ -620,6 +632,8 @@</div><div class="gmail_extra">     ngx_conf_merge_str_value(conf->stapling_responder,</div><div class="gmail_extra">                          prev->stapling_responder, "");</div><div class="gmail_extra"><br></div><div class="gmail_extra">+    ngx_conf_merge_value(conf->h2, prev->h2, 0);</div><div class="gmail_extra">+</div><div class="gmail_extra">     conf->ssl.log = cf->log;</div><div class="gmail_extra"><br></div><div class="gmail_extra">     if (conf->enable) {</div><div class="gmail_extra">diff -r 5e05118678af src/http/modules/ngx_http_ssl_module.h</div><div class="gmail_extra">--- a/src/http/modules/ngx_http_ssl_module.h<span class="gmail-Apple-tab-span" style="white-space:pre">      </span>Mon May 29 23:33:38 2017 +0300</div><div class="gmail_extra">+++ b/src/http/modules/ngx_http_ssl_module.h<span class="gmail-Apple-tab-span" style="white-space:pre">       </span>Fri Jun 09 07:15:50 2017 -0400</div><div class="gmail_extra">@@ -57,6 +57,8 @@</div><div class="gmail_extra"><br></div><div class="gmail_extra">     u_char                         *file;</div><div class="gmail_extra">     ngx_uint_t                      line;</div><div class="gmail_extra">+</div><div class="gmail_extra">+    ngx_flag_t                      h2;</div><div class="gmail_extra"> } ngx_http_ssl_srv_conf_t;</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">diff -r 5e05118678af src/http/ngx_http_request.c</div><div class="gmail_extra">--- a/src/http/ngx_http_request.c<span class="gmail-Apple-tab-span" style="white-space:pre">      </span>Mon May 29 23:33:38 2017 +0300</div><div class="gmail_extra">+++ b/src/http/ngx_http_request.c<span class="gmail-Apple-tab-span" style="white-space:pre">  </span>Fri Jun 09 07:15:50 2017 -0400</div><div class="gmail_extra">@@ -784,9 +784,10 @@</div><div class="gmail_extra">      && (defined TLSEXT_TYPE_application_layer_protocol_negotiation           \</div><div class="gmail_extra">          || defined TLSEXT_TYPE_next_proto_neg))</div><div class="gmail_extra">         {</div><div class="gmail_extra">-        unsigned int            len;</div><div class="gmail_extra">-        const unsigned char    *data;</div><div class="gmail_extra">-        ngx_http_connection_t  *hc;</div><div class="gmail_extra">+        unsigned int              len;</div><div class="gmail_extra">+        const unsigned char      *data;</div><div class="gmail_extra">+        ngx_http_connection_t    *hc;</div><div class="gmail_extra">+        ngx_http_ssl_srv_conf_t  *sscf;</div><div class="gmail_extra"><br></div><div class="gmail_extra">         hc = c->data;</div><div class="gmail_extra"><br></div><div class="gmail_extra">@@ -805,9 +806,14 @@</div><div class="gmail_extra">             SSL_get0_next_proto_negotiated(c->ssl->connection, &data, &len);</div><div class="gmail_extra"> #endif</div><div class="gmail_extra"><br></div><div class="gmail_extra">-            if (len == 2 && data[0] == 'h' && data[1] == '2') {</div><div class="gmail_extra">-                ngx_http_v2_init(c->read);</div><div class="gmail_extra">-                return;</div><div class="gmail_extra">+            sscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_ssl_module);</div><div class="gmail_extra">+</div><div class="gmail_extra">+            if (sscf->h2) {</div><div class="gmail_extra">+</div><div class="gmail_extra">+                if (len == 2 && data[0] == 'h' && data[1] == '2') {</div><div class="gmail_extra">+                    ngx_http_v2_init(c->read);</div><div class="gmail_extra">+                    return;</div><div class="gmail_extra">+                }</div><div class="gmail_extra">             }</div><div class="gmail_extra">         }</div><div class="gmail_extra">         }</div></div></div>