summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_http_compress.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nxt_http_compress.c')
-rw-r--r--src/nxt_http_compress.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/nxt_http_compress.c b/src/nxt_http_compress.c
index 55e20e3a..613bf5f1 100644
--- a/src/nxt_http_compress.c
+++ b/src/nxt_http_compress.c
@@ -6,6 +6,7 @@
#include "nxt_http_compress.h"
+#include <errno.h>
#include <stddef.h>
#include <nxt_unit_cdefs.h>
@@ -37,6 +38,11 @@ static nxt_conf_map_t nxt_http_compress_conf[] = {
NXT_CONF_MAP_INT8,
offsetof(nxt_http_compress_conf_t, level),
},
+ {
+ nxt_string("min_length"),
+ NXT_CONF_MAP_SIZE,
+ offsetof(nxt_http_compress_conf_t, min_len),
+ },
};
@@ -56,6 +62,7 @@ nxt_http_compress_init(nxt_router_conf_t *rtcf, nxt_http_action_t *action,
}
conf->level = NXT_DEFAULT_COMPRESSION;
+ conf->min_len = 20;
ret = nxt_conf_map_object(mp, acf->compress, nxt_http_compress_conf,
nxt_nitems(nxt_http_compress_conf), conf);
@@ -98,3 +105,30 @@ nxt_http_compress_append_field(nxt_task_t *task, nxt_http_request_t *r,
return NXT_OK;
}
+
+
+ssize_t
+nxt_http_compress_resp_content_length(nxt_http_response_t *resp)
+{
+ size_t cl;
+ nxt_str_t str;
+
+ if (resp->content_length_n != -1) {
+ return resp->content_length_n;
+ }
+
+ if (resp->content_length == NULL) {
+ return -1;
+ }
+
+ str.length = resp->content_length->value_length;
+ str.start = resp->content_length->value;
+
+ errno = 0;
+ cl = nxt_atoul(&str);
+ if (errno != 0) {
+ return -1;
+ }
+
+ return cl;
+}