Browse Source

[multiple] dynamic handlers hint backend header sz

personal/stbuehler/fix-fdevent
Glenn Strauss 4 years ago
parent
commit
9f6a46738d
  1. 8
      src/mod_fastcgi.c
  2. 6
      src/mod_proxy.c
  3. 6
      src/mod_scgi.c

8
src/mod_fastcgi.c

@ -217,9 +217,7 @@ static handler_t fcgi_create_env(server *srv, handler_ctx *hctx) {
FCGI_Header header;
int request_id;
buffer *b = chunkqueue_prepend_buffer_open(hctx->wb);
gw_host *host = hctx->host;
connection *con = hctx->remote_conn;
http_cgi_opts opts = {
@ -229,6 +227,8 @@ static handler_t fcgi_create_env(server *srv, handler_ctx *hctx) {
host->strip_request_uri
};
buffer * const b = chunkqueue_prepend_buffer_open_sz(hctx->wb, (size_t)(con->read_queue->bytes_out - hctx->wb->bytes_in));
/* send FCGI_BEGIN_REQUEST */
if (hctx->request_id == 0) {
@ -245,10 +245,6 @@ static handler_t fcgi_create_env(server *srv, handler_ctx *hctx) {
beginRecord.body.flags = 0;
memset(beginRecord.body.reserved, 0, sizeof(beginRecord.body.reserved));
if ((off_t)buffer_string_space(b) < con->read_queue->bytes_out - hctx->wb->bytes_in) {
buffer_string_prepare_copy(b, ((size_t)(con->read_queue->bytes_out - hctx->wb->bytes_in + 4095) & ~4095uL)-1);
}
buffer_copy_string_len(b, (const char *)&beginRecord, sizeof(beginRecord));
fcgi_header(&header, FCGI_PARAMS, request_id, 0, 0); /*(set aside space to fill in later)*/
buffer_append_string_len(b, (const char *)&header, sizeof(header));

6
src/mod_proxy.c

@ -708,15 +708,11 @@ static void proxy_set_Forwarded(connection *con, const unsigned int flags) {
static handler_t proxy_create_env(server *srv, gw_handler_ctx *gwhctx) {
handler_ctx *hctx = (handler_ctx *)gwhctx;
connection *con = hctx->gw.remote_conn;
buffer *b = chunkqueue_prepend_buffer_open(hctx->gw.wb);
const int remap_headers = (NULL != hctx->conf.header.urlpaths
|| NULL != hctx->conf.header.hosts_request);
const int upgrade = hctx->conf.header.upgrade
&& (NULL != http_header_request_get(con, HTTP_HEADER_UPGRADE, CONST_STR_LEN("Upgrade")));
if ((off_t)buffer_string_space(b) < con->read_queue->bytes_out - hctx->gw.wb->bytes_in) {
buffer_string_prepare_copy(b, ((size_t)(con->read_queue->bytes_out - hctx->gw.wb->bytes_in + 4095) & ~4095uL)-1);
}
buffer * const b = chunkqueue_prepend_buffer_open_sz(hctx->gw.wb, (size_t)(con->read_queue->bytes_out - hctx->gw.wb->bytes_in));
/* build header */

6
src/mod_scgi.c

@ -156,7 +156,6 @@ static int scgi_env_add_uwsgi(void *venv, const char *key, size_t key_len, const
static handler_t scgi_create_env(server *srv, handler_ctx *hctx) {
buffer *b = chunkqueue_prepend_buffer_open(hctx->wb);
gw_host *host = hctx->host;
connection *con = hctx->remote_conn;
http_cgi_opts opts = { 0, 0, host->docroot, NULL };
@ -164,10 +163,7 @@ static handler_t scgi_create_env(server *srv, handler_ctx *hctx) {
? scgi_env_add_scgi
: scgi_env_add_uwsgi;
size_t offset;
if ((off_t)buffer_string_space(b) < con->read_queue->bytes_out - hctx->wb->bytes_in) {
buffer_string_prepare_copy(b, ((size_t)(con->read_queue->bytes_out - hctx->wb->bytes_in + 4095) & ~4095uL)-1);
}
buffer * const b = chunkqueue_prepend_buffer_open_sz(hctx->wb, (size_t)(con->read_queue->bytes_out - hctx->wb->bytes_in));
/* save space for 9 digits (plus ':'), though incoming HTTP request
* currently limited to 64k (65535, so 5 chars) */

Loading…
Cancel
Save