diff --git a/src/chunk.c b/src/chunk.c index c1e670ff..cf3da02a 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -31,6 +31,11 @@ static chunk *chunk_buffers; static array *chunkqueue_default_tempdirs = NULL; static unsigned int chunkqueue_default_tempfile_size = DEFAULT_TEMPFILE_SIZE; +void chunkqueue_set_chunk_size (size_t sz) +{ + chunk_buf_sz = sz > 0 ? ((sz + 1023) & ~1023uL) : 4096; +} + void chunkqueue_set_tempdirs_default_reset (void) { chunkqueue_default_tempdirs = NULL; diff --git a/src/chunk.h b/src/chunk.h index 8f1d2791..892f680f 100644 --- a/src/chunk.h +++ b/src/chunk.h @@ -54,6 +54,7 @@ void chunkqueue_chunk_pool_clear(void); void chunkqueue_chunk_pool_free(void); chunkqueue *chunkqueue_init(void); +void chunkqueue_set_chunk_size (size_t sz); void chunkqueue_set_tempdirs_default_reset (void); void chunkqueue_set_tempdirs_default (array *tempdirs, unsigned int upload_temp_file_size); void chunkqueue_append_file(chunkqueue *cq, buffer *fn, off_t offset, off_t len); /* copies "fn" */ diff --git a/src/configfile.c b/src/configfile.c index 9c7ff249..916c8534 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -175,6 +175,7 @@ static int config_insert(server *srv) { int ret = 0; buffer *stat_cache_string; array *http_parseopts; + unsigned int chunk_sz = 0; config_values_t cv[] = { { "server.bind", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER }, /* 0 */ @@ -236,7 +237,7 @@ static int config_insert(server *srv) { { "server.upload-dirs", NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_SERVER }, /* 45 */ { "server.core-files", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 46 */ { "server.compat-module-load", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 47 */ - { "unused-slot-moved-to-mod-openssl", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 48 */ + { "server.chunkqueue-chunk-sz", NULL, T_CONFIG_INT, T_CONFIG_SCOPE_SERVER }, /* 48 */ { "etag.use-inode", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 49 */ { "etag.use-mtime", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 50 */ @@ -303,6 +304,7 @@ static int config_insert(server *srv) { cv[45].destination = srv->srvconf.upload_tempdirs; cv[46].destination = &(srv->srvconf.enable_cores); cv[47].destination = &(srv->srvconf.compat_module_load); + cv[48].destination = &chunk_sz; cv[52].destination = &(srv->srvconf.reject_expect_100_with_417); cv[55].destination = srv->srvconf.breakagelog_file; @@ -528,6 +530,10 @@ static int config_insert(server *srv) { srv->srvconf.log_request_header_on_error = 1; } + if (0 != chunk_sz) { + chunkqueue_set_chunk_size(chunk_sz); + } + if (0 != stat_cache_choose_engine(srv, stat_cache_string)) { ret = HANDLER_ERROR; }