diff options
| author | Sergey Kandaurov <pluknet@nginx.com> | 2022-02-14 10:14:07 +0300 |
|---|---|---|
| committer | Sergey Kandaurov <pluknet@nginx.com> | 2022-02-14 10:14:07 +0300 |
| commit | a767450093200c76dba8851a9453f13296dd6371 (patch) | |
| tree | d8defe592e6ce44e1dd79ebbd6915bc215855403 /src/http | |
| parent | 45a8ca0e7a1ae7ec4f7769919e9f3e007113d5ad (diff) | |
| parent | 828fb94e1dbe1c433edd39147ba085c4622c99ed (diff) | |
| download | nginx-a767450093200c76dba8851a9453f13296dd6371.tar.gz nginx-a767450093200c76dba8851a9453f13296dd6371.tar.bz2 | |
Merged with the default branch.
Diffstat (limited to '')
| -rw-r--r-- | src/http/ngx_http_file_cache.c | 5 | ||||
| -rw-r--r-- | src/http/ngx_http_write_filter_module.c | 3 | ||||
| -rw-r--r-- | src/http/v2/ngx_http_v2.h | 2 | ||||
| -rw-r--r-- | src/http/v2/ngx_http_v2_filter_module.c | 7 |
4 files changed, 14 insertions, 3 deletions
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c index c40093bca..4d2f6c42c 100644 --- a/src/http/ngx_http_file_cache.c +++ b/src/http/ngx_http_file_cache.c @@ -1756,6 +1756,11 @@ ngx_http_file_cache_forced_expire(ngx_http_file_cache_t *cache) break; } + if (fcn->deleting) { + wait = 1; + break; + } + p = ngx_hex_dump(key, (u_char *) &fcn->node.key, sizeof(ngx_rbtree_key_t)); len = NGX_HTTP_CACHE_KEY_LEN - sizeof(ngx_rbtree_key_t); diff --git a/src/http/ngx_http_write_filter_module.c b/src/http/ngx_http_write_filter_module.c index 8ef19b645..9188ee948 100644 --- a/src/http/ngx_http_write_filter_module.c +++ b/src/http/ngx_http_write_filter_module.c @@ -227,7 +227,8 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in) if (size == 0 && !(c->buffered & NGX_LOWLEVEL_BUFFERED) - && !(last && c->need_last_buf)) + && !(last && c->need_last_buf) + && !(flush && c->need_flush_buf)) { if (last || flush || sync) { for (cl = r->out; cl; /* void */) { diff --git a/src/http/v2/ngx_http_v2.h b/src/http/v2/ngx_http_v2.h index 70ee287ae..4e252931c 100644 --- a/src/http/v2/ngx_http_v2.h +++ b/src/http/v2/ngx_http_v2.h @@ -153,12 +153,12 @@ struct ngx_http_v2_connection_s { ngx_queue_t dependencies; ngx_queue_t closed; + ngx_uint_t closed_nodes; ngx_uint_t last_sid; ngx_uint_t last_push; time_t lingering_time; - unsigned closed_nodes:8; unsigned settings_ack:1; unsigned table_update:1; unsigned blocked:1; diff --git a/src/http/v2/ngx_http_v2_filter_module.c b/src/http/v2/ngx_http_v2_filter_module.c index 9ffb155df..62b6a047c 100644 --- a/src/http/v2/ngx_http_v2_filter_module.c +++ b/src/http/v2/ngx_http_v2_filter_module.c @@ -665,6 +665,7 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) fc->send_chain = ngx_http_v2_send_chain; fc->need_last_buf = 1; + fc->need_flush_buf = 1; return ngx_http_v2_filter_send(fc, stream); } @@ -1815,7 +1816,11 @@ ngx_http_v2_waiting_queue(ngx_http_v2_connection_t *h2c, static ngx_inline ngx_int_t ngx_http_v2_filter_send(ngx_connection_t *fc, ngx_http_v2_stream_t *stream) { - if (stream->queued == 0) { + ngx_connection_t *c; + + c = stream->connection->connection; + + if (stream->queued == 0 && !c->buffered) { fc->buffered &= ~NGX_HTTP_V2_BUFFERED; return NGX_OK; } |
