mirror of
https://github.com/nginx/nginx.git
synced 2025-06-16 00:21:02 +08:00
gRPC: limited allocations due to ping and settings frames.
This commit is contained in:
parent
60b93594cc
commit
42043b4ef7
@ -78,6 +78,9 @@ typedef struct {
|
|||||||
|
|
||||||
ngx_uint_t id;
|
ngx_uint_t id;
|
||||||
|
|
||||||
|
ngx_uint_t pings;
|
||||||
|
ngx_uint_t settings;
|
||||||
|
|
||||||
ssize_t send_window;
|
ssize_t send_window;
|
||||||
size_t recv_window;
|
size_t recv_window;
|
||||||
|
|
||||||
@ -3584,6 +3587,12 @@ ngx_http_grpc_parse_settings(ngx_http_request_t *r, ngx_http_grpc_ctx_t *ctx,
|
|||||||
ctx->rest);
|
ctx->rest);
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->free == NULL && ctx->settings++ > 1000) {
|
||||||
|
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
|
||||||
|
"upstream sent too many settings frames");
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (p = b->pos; p < last; p++) {
|
for (p = b->pos; p < last; p++) {
|
||||||
@ -3736,6 +3745,12 @@ ngx_http_grpc_parse_ping(ngx_http_request_t *r,
|
|||||||
"upstream sent ping frame with ack flag");
|
"upstream sent ping frame with ack flag");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->free == NULL && ctx->pings++ > 1000) {
|
||||||
|
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
|
||||||
|
"upstream sent too many ping frames");
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (p = b->pos; p < last; p++) {
|
for (p = b->pos; p < last; p++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user