annotate src/core/ngx_murmurhash.h @ 7746:88eca63261c3
gRPC: RST_STREAM(NO_ERROR) handling after "trailer only" responses.
Similarly to the problem fixed in 2096b21fcd10 (ticket #1792),
when a "trailer only" gRPC response (that is, a response with the
END_STREAM flag in the HEADERS frame) was immediately followed by
RST_STREAM(NO_ERROR) in the data preread along with the response
header, RST_STREAM wasn't properly skipped and caused "upstream
rejected request with error 0" errors.
Observed with "unknown service" gRPC errors returned by grpc-go.
Fix is to set ctx->done if we are going to parse additional data,
so the RST_STREAM(NO_ERROR) is properly skipped. Additionally, now
ngx_http_grpc_filter() will complain about frames sent for closed
stream if there are any.
author |
Pavel Pautov <p.pautov@f5.com> |
date |
Wed, 18 Nov 2020 18:41:16 -0800 |
parents |
709d7d24239d |
children |
|
rev |
line source |
3891
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
4412
|
4 * Copyright (C) Nginx, Inc.
|
3891
|
5 */
|
|
6
|
|
7
|
|
8 #ifndef _NGX_MURMURHASH_H_INCLUDED_
|
|
9 #define _NGX_MURMURHASH_H_INCLUDED_
|
|
10
|
|
11
|
|
12 #include <ngx_config.h>
|
|
13 #include <ngx_core.h>
|
|
14
|
|
15
|
|
16 uint32_t ngx_murmur_hash2(u_char *data, size_t len);
|
|
17
|
|
18
|
4575
|
19 #endif /* _NGX_MURMURHASH_H_INCLUDED_ */
|