aboutsummaryrefslogtreecommitdiffstats
path: root/www/nginx
diff options
context:
space:
mode:
authorjoneum <joneum@FreeBSD.org>2019-07-27 00:46:46 +0800
committerjoneum <joneum@FreeBSD.org>2019-07-27 00:46:46 +0800
commit3590a591434d05ad753bfa1be130b55fb67ff4c2 (patch)
tree6e289f322858ac326d3fec32463132b18dcf7e1f /www/nginx
parentbef66d0b4c2880f7e834e6c73c960680c9d8325b (diff)
downloadfreebsd-ports-gnome-3590a591434d05ad753bfa1be130b55fb67ff4c2.tar.gz
freebsd-ports-gnome-3590a591434d05ad753bfa1be130b55fb67ff4c2.tar.zst
freebsd-ports-gnome-3590a591434d05ad753bfa1be130b55fb67ff4c2.zip
Revert r507359
Diffstat (limited to 'www/nginx')
-rw-r--r--www/nginx/Makefile2
-rw-r--r--www/nginx/Makefile.extmod2
-rw-r--r--www/nginx/Makefile.options.desc1
-rw-r--r--www/nginx/files/extra-patch-src_http_modules_ngx__http__slice_read_ahead.c456
4 files changed, 1 insertions, 460 deletions
diff --git a/www/nginx/Makefile b/www/nginx/Makefile
index a184520893fa..4cfbd659432d 100644
--- a/www/nginx/Makefile
+++ b/www/nginx/Makefile
@@ -74,7 +74,7 @@ OPTIONS_GROUP_HTTPGRP= GOOGLE_PERFTOOLS HTTP HTTP_ADDITION HTTP_AUTH_REQ \
HTTP_CACHE HTTP_DAV HTTP_FLV HTTP_GUNZIP_FILTER HTTP_GZIP_STATIC \
HTTP_IMAGE_FILTER HTTP_MP4 HTTP_PERL HTTP_RANDOM_INDEX HTTP_REALIP \
HTTP_REWRITE HTTP_SECURE_LINK HTTP_SLICE HTTP_SSL HTTP_STATUS HTTP_SUB \
- HTTP_XSLT HTTPV2 STREAM STREAM_SSL STREAM_SSL_PREREAD HTTP_SLICE_AHEAD
+ HTTP_XSLT HTTPV2 STREAM STREAM_SSL STREAM_SSL_PREREAD
# External modules (arrayvar MUST appear after devel_kit for build-dep)
OPTIONS_GROUP_HTTPGRP+= AJP AWS_AUTH BROTLI CACHE_PURGE CLOJURE CT DEVEL_KIT \
ARRAYVAR DRIZZLE DYNAMIC_UPSTREAM ECHO ENCRYPTSESSION FASTDFS FORMINPUT \
diff --git a/www/nginx/Makefile.extmod b/www/nginx/Makefile.extmod
index eefb9361b0a1..fc10834601eb 100644
--- a/www/nginx/Makefile.extmod
+++ b/www/nginx/Makefile.extmod
@@ -139,8 +139,6 @@ HTTP_RESPONSE_MASTER_SITES= http://catap.ru/downloads/nginx/:response
HTTP_RESPONSE_DISTFILES= ngx_http_response-0.3.tar.gz:response
HTTP_RESPONSE_CONFIGURE_ON= --add-module=${WRKDIR}/ngx_http_response-0.3
-HTTP_SLICE_AHEAD_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-src_http_modules_ngx__http__slice_read_ahead.c
-
HTTP_SUBS_FILTER_GH_TUPLE= yaoweibin:ngx_http_substitutions_filter_module:v0.6.4:subs_filter
HTTP_SUBS_FILTER_CONFIGURE_ON= --add-module=${WRKSRC_subs_filter}
diff --git a/www/nginx/Makefile.options.desc b/www/nginx/Makefile.options.desc
index 8fc40dcfcc7a..c8df7df8bed7 100644
--- a/www/nginx/Makefile.options.desc
+++ b/www/nginx/Makefile.options.desc
@@ -58,7 +58,6 @@ HTTP_RESPONSE_DESC= 3rd party http_response module
HTTP_REWRITE_DESC= Enable http_rewrite module
HTTP_SECURE_LINK_DESC= Enable http_secure_link module
HTTP_SLICE_DESC= Enable http_slice module
-HTTP_SLICE_AHEAD= Enable slice read ahead patch
HTTP_SSL_DESC= Enable http_ssl module
HTTP_STATUS_DESC= Enable http_stub_status module
HTTP_SUBS_FILTER_DESC= 3rd party subs filter module
diff --git a/www/nginx/files/extra-patch-src_http_modules_ngx__http__slice_read_ahead.c b/www/nginx/files/extra-patch-src_http_modules_ngx__http__slice_read_ahead.c
deleted file mode 100644
index b9eb1f20a439..000000000000
--- a/www/nginx/files/extra-patch-src_http_modules_ngx__http__slice_read_ahead.c
+++ /dev/null
@@ -1,456 +0,0 @@
---- src/http/modules/ngx_http_slice_filter_module.c.orig 2019-04-23 13:12:58 UTC
-+++ src/http/modules/ngx_http_slice_filter_module.c
-@@ -2,6 +2,10 @@
- /*
- * Copyright (C) Roman Arutyunyan
- * Copyright (C) Nginx, Inc.
-+ * Copyright (C) Carey Gister
-+ * Copyright (C) Metapeer, Inc.
-+ *
-+ * Retrieve slices with an optional look-a-head of N slices where N is a float value.
- */
-
-
-@@ -9,13 +13,25 @@
- #include <ngx_core.h>
- #include <ngx_http.h>
-
-+/*
-+ * Location Configuration -- size is size of a slice, read_a_heads is number of
-+ * blocks to look a head: 0, will not limit the number of blocks. Blocks will be
-+ * retrieved as quickly as GETs can be issued and returned.
-+ */
-
- typedef struct {
- size_t size;
-+ float read_a_heads;
- } ngx_http_slice_loc_conf_t;
-
-
- typedef struct {
-+ size_t requested_bytes;
-+ size_t received_bytes;
-+ size_t skipped_first_slice;
-+} ngx_http_slice_read_a_head_t;
-+
-+typedef struct {
- off_t start;
- off_t end;
- ngx_str_t range;
-@@ -23,6 +39,7 @@ typedef struct {
- unsigned last:1;
- unsigned active:1;
- ngx_http_request_t *sr;
-+ ngx_http_slice_read_a_head_t *read_a_head;
- } ngx_http_slice_ctx_t;
-
-
-@@ -46,6 +63,8 @@ static char *ngx_http_slice_merge_loc_conf(ngx_conf_t
- void *child);
- static ngx_int_t ngx_http_slice_add_variables(ngx_conf_t *cf);
- static ngx_int_t ngx_http_slice_init(ngx_conf_t *cf);
-+static char * ngx_conf_set_float_slot(ngx_conf_t *cf, ngx_command_t *cmd,
-+ void *conf);
-
-
- static ngx_command_t ngx_http_slice_filter_commands[] = {
-@@ -57,6 +76,13 @@ static ngx_command_t ngx_http_slice_filter_commands[]
- offsetof(ngx_http_slice_loc_conf_t, size),
- NULL },
-
-+ { ngx_string("slice_read_ahead"),
-+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
-+ ngx_conf_set_float_slot,
-+ NGX_HTTP_LOC_CONF_OFFSET,
-+ offsetof(ngx_http_slice_loc_conf_t, read_a_heads),
-+ NULL },
-+
- ngx_null_command
- };
-
-@@ -102,11 +128,11 @@ static ngx_int_t
- ngx_http_slice_header_filter(ngx_http_request_t *r)
- {
- off_t end;
-- ngx_int_t rc;
-+ ngx_int_t rc, rc1;
- ngx_table_elt_t *h;
- ngx_http_slice_ctx_t *ctx;
- ngx_http_slice_loc_conf_t *slcf;
-- ngx_http_slice_content_range_t cr;
-+ ngx_http_slice_content_range_t cr, cr1;
-
- ctx = ngx_http_get_module_ctx(r, ngx_http_slice_filter_module);
- if (ctx == NULL) {
-@@ -187,6 +213,23 @@ ngx_http_slice_header_filter(ngx_http_request_t *r)
- rc = ngx_http_next_header_filter(r);
-
- if (r != r->main) {
-+ if (ctx->read_a_head != NULL) {
-+ ngx_log_debug5(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (subrequest) requested_bytes: %uz, size: %uz, range: %O/%O, end: %O",
-+ ctx->read_a_head->requested_bytes, slcf->size, cr.start,
-+ cr.end, end);
-+
-+ if (end != cr.start) {
-+ ctx->read_a_head->requested_bytes +=
-+ ngx_min(slcf->size,
-+ (size_t) end - (size_t) cr.start);
-+ }
-+
-+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (subrequest) new requested_bytes: %uz, size: %uz",
-+ ctx->read_a_head->requested_bytes, slcf->size);
-+ }
-+
- return rc;
- }
-
-@@ -201,8 +244,68 @@ ngx_http_slice_header_filter(ngx_http_request_t *r)
- ctx->end = r->headers_out.content_offset
- + r->headers_out.content_length_n;
-
-+ /* Update requested bytes for the new chunk. */
-+ if (ctx->read_a_head != NULL) {
-+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, partial) requested_bytes: %uz, size: %uz, start/end (%O/%O)",
-+ ctx->read_a_head->requested_bytes, slcf->size,
-+ ctx->start, ctx->end);
-+
-+ if (ctx->end != ctx->start) {
-+ ctx->read_a_head->requested_bytes +=
-+ ngx_min(slcf->size,
-+ (size_t) ctx->end - (size_t) ctx->start);
-+ }
-+
-+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, partial) new requested_bytes: %uz, size: %uz, start/end (%O/%O)",
-+ ctx->read_a_head->requested_bytes, slcf->size, ctx->start, ctx->end);
-+
-+ /* Parse the new Content-Range, which may have been set by the Range
-+ filter. If the start changed, then adjust the requested_byte count
-+ by the difference between the slice start and the actual start.
-+ These bytes will never be received. */
-+
-+ rc1 = ngx_http_slice_parse_content_range(r, &cr1);
-+ ngx_log_debug(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, partial): rc1: %d",
-+ rc1);
-+
-+ if (rc1 == NGX_OK) {
-+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, partial new content range) cr1.start: %uz, cr1.end: %uz",
-+ cr1.start, cr1.end);
-+
-+ if (cr1.start != cr.start) {
-+ ctx->read_a_head->skipped_first_slice =
-+ cr1.start - (slcf->size * (cr1.start / slcf->size));
-+
-+ ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, partial) new cr.start: %uz, initial start: %uz, skipped first slice: %uz",
-+ cr1.start, cr.start,
-+ ctx->read_a_head->skipped_first_slice);
-+ }
-+ }
-+ }
- } else {
- ctx->end = cr.complete_length;
-+
-+ /* Update the requested bytes for the new chunk. */
-+ if (ctx->read_a_head != NULL) {
-+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, full) requested_bytes: %uz, size: %uz, start/end (%O/%O)",
-+ ctx->read_a_head->requested_bytes, slcf->size, ctx->start, ctx->end);
-+
-+ if (ctx->end != ctx->start) {
-+ ctx->read_a_head->requested_bytes +=
-+ ngx_min(slcf->size,
-+ (size_t) ctx->end - (size_t) ctx->start);
-+ }
-+
-+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice header (main request, full) new requested_bytes: %uz, size: %uz, start/end (%O/%O)",
-+ ctx->read_a_head->requested_bytes, slcf->size, ctx->start, ctx->end);
-+ }
- }
-
- return rc;
-@@ -216,14 +319,31 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
- ngx_chain_t *cl;
- ngx_http_slice_ctx_t *ctx;
- ngx_http_slice_loc_conf_t *slcf;
-+ size_t received, read_a_head_window, read_a_head_size;
-
- ctx = ngx_http_get_module_ctx(r, ngx_http_slice_filter_module);
-
-- if (ctx == NULL || r != r->main) {
-+ if (ctx == NULL) {
- return ngx_http_next_body_filter(r, in);
- }
-
-+ if (r != r->main) {
-+ if (ctx->read_a_head != NULL) {
-+ received = 0;
-+ for (cl = in; cl; cl = cl->next) {
-+ received = received + ngx_buf_size(cl->buf);
-+ }
-+
-+ ctx->read_a_head->received_bytes += received;
-+ }
-+
-+ return ngx_http_next_body_filter(r, in);
-+ }
-+
-+ /* For the main request */
-+ received = 0;
- for (cl = in; cl; cl = cl->next) {
-+ received = received + ngx_buf_size(cl->buf);
- if (cl->buf->last_buf) {
- cl->buf->last_buf = 0;
- cl->buf->last_in_chain = 1;
-@@ -232,6 +352,10 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
- }
- }
-
-+ if (ctx->read_a_head != NULL) {
-+ ctx->read_a_head->received_bytes += received;
-+ }
-+
- rc = ngx_http_next_body_filter(r, in);
-
- if (rc == NGX_ERROR || !ctx->last) {
-@@ -258,6 +382,20 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
- return rc;
- }
-
-+ slcf = ngx_http_get_module_loc_conf(r, ngx_http_slice_filter_module);
-+
-+ if (ctx->read_a_head != NULL) {
-+ read_a_head_size = (size_t) (slcf->size * slcf->read_a_heads);
-+ read_a_head_window = r->connection->sent + read_a_head_size;
-+
-+ if ((r->connection->sent != 0) &&
-+ ((read_a_head_window + ctx->read_a_head->skipped_first_slice) < ctx->read_a_head->requested_bytes)) {
-+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-+ "http slice body filter defer subrequest: returning NGX_AGAIN");
-+ return NGX_AGAIN;
-+ }
-+ }
-+
- if (ngx_http_subrequest(r, &r->uri, &r->args, &ctx->sr, NULL,
- NGX_HTTP_SUBREQUEST_CLONE)
- != NGX_OK)
-@@ -267,8 +405,6 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_
-
- ngx_http_set_ctx(ctx->sr, ctx, ngx_http_slice_filter_module);
-
-- slcf = ngx_http_get_module_loc_conf(r, ngx_http_slice_filter_module);
--
- ctx->range.len = ngx_sprintf(ctx->range.data, "bytes=%O-%O", ctx->start,
- ctx->start + (off_t) slcf->size - 1)
- - ctx->range.data;
-@@ -287,6 +423,7 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
- ngx_http_slice_content_range_t *cr)
- {
- off_t start, end, complete_length, cutoff, cutlim;
-+ ssize_t len;
- u_char *p;
- ngx_table_elt_t *h;
-
-@@ -300,6 +437,7 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
- }
-
- p = h->value.data + 6;
-+ len = h->value.len - 6;
-
- cutoff = NGX_MAX_OFF_T_VALUE / 10;
- cutlim = NGX_MAX_OFF_T_VALUE % 10;
-@@ -308,56 +446,62 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
- end = 0;
- complete_length = 0;
-
-- while (*p == ' ') { p++; }
-+ while ((*p == ' ') && (len != 0)) { p++; len--; }
-
-- if (*p < '0' || *p > '9') {
-+ if ((len == 0) || (*p < '0' || *p > '9')) {
- return NGX_ERROR;
- }
-
-- while (*p >= '0' && *p <= '9') {
-+ while ((len != 0) && (*p >= '0' && *p <= '9')) {
- if (start >= cutoff && (start > cutoff || *p - '0' > cutlim)) {
- return NGX_ERROR;
- }
-
- start = start * 10 + (*p++ - '0');
-+ len--;
- }
-
-- while (*p == ' ') { p++; }
-+ while ((len != 0) && (*p == ' ')) { p++; len--; }
-
-- if (*p++ != '-') {
-+ if ((len == 0) || (*p++ != '-')) {
- return NGX_ERROR;
- }
-
-- while (*p == ' ') { p++; }
-+ len--;
-
-- if (*p < '0' || *p > '9') {
-+ while ((len != 0) && (*p == ' ')) { p++; len--; }
-+
-+ if ((len == 0) || (*p < '0' || *p > '9')) {
- return NGX_ERROR;
- }
-
-- while (*p >= '0' && *p <= '9') {
-+ while ((len != 0) && (*p >= '0' && *p <= '9')) {
- if (end >= cutoff && (end > cutoff || *p - '0' > cutlim)) {
- return NGX_ERROR;
- }
-
- end = end * 10 + (*p++ - '0');
-+ len--;
- }
-
- end++;
-
-- while (*p == ' ') { p++; }
-+ while ((len != 0) && (*p == ' ')) { p++; len--; }
-
-- if (*p++ != '/') {
-+ if ((len == 0) || (*p++ != '/')) {
- return NGX_ERROR;
- }
-
-- while (*p == ' ') { p++; }
-+ len--;
-
-- if (*p != '*') {
-+ while ((len != 0) && (*p == ' ')) { p++; len--; }
-+
-+ if ((len != 0) && (*p != '*')) {
- if (*p < '0' || *p > '9') {
- return NGX_ERROR;
- }
-
-- while (*p >= '0' && *p <= '9') {
-+ while ((len != 0) && (*p >= '0' && *p <= '9')) {
- if (complete_length >= cutoff
- && (complete_length > cutoff || *p - '0' > cutlim))
- {
-@@ -365,16 +509,18 @@ ngx_http_slice_parse_content_range(ngx_http_request_t
- }
-
- complete_length = complete_length * 10 + (*p++ - '0');
-+ len--;
- }
-
- } else {
- complete_length = -1;
- p++;
-+ len--;
- }
-
-- while (*p == ' ') { p++; }
-+ while ((len != 0) && (*p == ' ')) { p++; len--; }
-
-- if (*p != '\0') {
-+ if (len != 0) {
- return NGX_ERROR;
- }
-
-@@ -390,9 +536,10 @@ static ngx_int_t
- ngx_http_slice_range_variable(ngx_http_request_t *r,
- ngx_http_variable_value_t *v, uintptr_t data)
- {
-- u_char *p;
-- ngx_http_slice_ctx_t *ctx;
-- ngx_http_slice_loc_conf_t *slcf;
-+ u_char *p;
-+ ngx_http_slice_ctx_t *ctx;
-+ ngx_http_slice_loc_conf_t *slcf;
-+ ngx_http_slice_read_a_head_t *read_a_head;
-
- ctx = ngx_http_get_module_ctx(r, ngx_http_slice_filter_module);
-
-@@ -414,6 +561,15 @@ ngx_http_slice_range_variable(ngx_http_request_t *r,
- return NGX_ERROR;
- }
-
-+ if (slcf->read_a_heads != 0.0) {
-+ read_a_head = ngx_pcalloc(r->pool, sizeof(ngx_http_slice_read_a_head_t));
-+ if (read_a_head == NULL) {
-+ return NGX_ERROR;
-+ }
-+
-+ ctx->read_a_head = read_a_head;
-+ }
-+
- ngx_http_set_ctx(r, ctx, ngx_http_slice_filter_module);
-
- p = ngx_pnalloc(r->pool, sizeof("bytes=-") - 1 + 2 * NGX_OFF_T_LEN);
-@@ -488,6 +644,39 @@ ngx_http_slice_get_start(ngx_http_request_t *r)
- }
-
-
-+static char *
-+ngx_conf_set_float_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
-+{
-+ char *p = conf;
-+ float *np;
-+ ngx_str_t *value;
-+ ngx_conf_post_t *post;
-+ ngx_int_t val;
-+
-+ np = (float *) (p + cmd->offset);
-+
-+ if (*np != (float) NGX_CONF_UNSET) {
-+ return "is duplicate";
-+ }
-+
-+ value = cf->args->elts;
-+ val = ngx_atofp(value[1].data, value[1].len, 3);
-+
-+ *np = (float) val / 1000.0;
-+
-+ if (*np == (float) NGX_ERROR) {
-+ return "invalid number";
-+ }
-+
-+ if (cmd->post) {
-+ post = cmd->post;
-+ return post->post_handler(cf, post, np);
-+ }
-+
-+ return NGX_CONF_OK;
-+}
-+
-+
- static void *
- ngx_http_slice_create_loc_conf(ngx_conf_t *cf)
- {
-@@ -499,6 +688,7 @@ ngx_http_slice_create_loc_conf(ngx_conf_t *cf)
- }
-
- slcf->size = NGX_CONF_UNSET_SIZE;
-+ slcf->read_a_heads = (float) NGX_CONF_UNSET;
-
- return slcf;
- }
-@@ -511,6 +701,13 @@ ngx_http_slice_merge_loc_conf(ngx_conf_t *cf, void *pa
- ngx_http_slice_loc_conf_t *conf = child;
-
- ngx_conf_merge_size_value(conf->size, prev->size, 0);
-+ ngx_conf_merge_value(conf->read_a_heads, prev->read_a_heads, 0.0);
-+
-+ if (conf->read_a_heads < 0.0) {
-+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "read a head must be >= 0");
-+ return NGX_CONF_ERROR;
-+ }
-+
-
- return NGX_CONF_OK;
- }