]> git.kaiwu.me - nginx.git/commitdiff
HTTP/3: fixed server push after 9ec3e71f8a61.
authorRoman Arutyunyan <arut@nginx.com>
Tue, 18 May 2021 15:17:25 +0000 (18:17 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Tue, 18 May 2021 15:17:25 +0000 (18:17 +0300)
When using server push, a segfault occured because
ngx_http_v3_create_push_request() accessed ngx_http_v3_session_t object the old
way.  Prior to 9ec3e71f8a61, HTTP/3 session was stored directly in c->data.
Now it's referenced by the v3_session field of ngx_http_connection_t.

src/http/v3/ngx_http_v3_filter_module.c

index ce0b478c2241eb360aab7507644a04130e74b05d..93f3318cb7deb3b9c1d9038b0ee34e9a7a2b4277 100644 (file)
@@ -837,8 +837,7 @@ ngx_http_v3_create_push_request(ngx_http_request_t *pr, ngx_str_t *path,
     ngx_connection_t          *c, *pc;
     ngx_http_request_t        *r;
     ngx_http_log_ctx_t        *ctx;
-    ngx_http_connection_t     *hc;
-    ngx_http_v3_session_t     *h3c;
+    ngx_http_connection_t     *hc, *phc;
     ngx_http_core_srv_conf_t  *cscf;
 
     pc = pr->connection;
@@ -858,8 +857,8 @@ ngx_http_v3_create_push_request(ngx_http_request_t *pr, ngx_str_t *path,
         goto failed;
     }
 
-    h3c = ngx_http_v3_get_session(c);
-    ngx_memcpy(hc, h3c, sizeof(ngx_http_connection_t));
+    phc = ngx_http_quic_get_connection(pc);
+    ngx_memcpy(hc, phc, sizeof(ngx_http_connection_t));
     c->data = hc;
 
     ctx = ngx_palloc(c->pool, sizeof(ngx_http_log_ctx_t));