-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Description
**The plugin will not work as expected when a module has read request body in the phase before proxy_pass
**
A similar one I mentioned in https://github.com/apache/apisix/issues/10379
I add log print below and plugin proxy_control set variable of request_body_no_buffering
to 1 indeed.
static ngx_int_t
ngx_http_proxy_handler(ngx_http_request_t *r)
{
...
#if (NGX_HTTP_APISIX)
if (!ngx_http_apisix_is_request_buffering(r, plcf->upstream.request_buffering)
#else
if (!plcf->upstream.request_buffering
#endif
&& plcf->body_values == NULL && plcf->upstream.pass_request_body
&& (!r->headers_in.chunked
|| plcf->http_version == NGX_HTTP_VERSION_11))
{
// add log print
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"========set request_body_no_buffering=======" );
r->request_body_no_buffering = 1;
}
...
ngx_int_t
ngx_http_read_client_request_body(ngx_http_request_t *r,
ngx_http_client_body_handler_pt post_handler)
{
size_t preread;
ssize_t size;
ngx_int_t rc;
ngx_buf_t *b;
ngx_chain_t out;
ngx_http_request_body_t *rb;
ngx_http_core_loc_conf_t *clcf;
r->main->count++;
if (r != r->main || r->request_body || r->discard_body) {
r->request_body_no_buffering = 0; // if request body has been read before, set back to 0
post_handler(r);
return NGX_OK;
}
...
Metadata
Metadata
Assignees
Labels
No labels