diff options
| author | Alejandro Colomar <alx@nginx.com> | 2023-08-28 17:34:20 +0200 |
|---|---|---|
| committer | Alejandro Colomar <alx@kernel.org> | 2023-10-25 13:38:46 +0200 |
| commit | 75e9535a250eb5c9d16a16633033786fde125758 (patch) | |
| tree | 0cd3d857878962e7a0cb04a4429477ce83bbfa07 /src/nxt_http_compress.c | |
| parent | d5906fc0a30d51bbd25f0b7026fba977962e6042 (diff) | |
| download | unit-75e9535a250eb5c9d16a16633033786fde125758.tar.gz unit-75e9535a250eb5c9d16a16633033786fde125758.tar.bz2 | |
HTTP: compress: added "mime_types" rule.
Signed-off-by: Alejandro Colomar <alx@nginx.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Diffstat (limited to 'src/nxt_http_compress.c')
| -rw-r--r-- | src/nxt_http_compress.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/nxt_http_compress.c b/src/nxt_http_compress.c index 763d1266..5216c5d7 100644 --- a/src/nxt_http_compress.c +++ b/src/nxt_http_compress.c @@ -42,12 +42,17 @@ static nxt_conf_map_t nxt_http_compress_conf[] = { NXT_CONF_MAP_SIZE, offsetof(nxt_http_compress_conf_t, min_len), }, + { + nxt_string("mime_types"), + NXT_CONF_MAP_PTR, + offsetof(nxt_http_compress_conf_t, mtypes), + }, }; nxt_int_t -nxt_http_compress_init(nxt_router_conf_t *rtcf, nxt_http_action_t *action, - nxt_http_action_conf_t *acf) +nxt_http_compress_init(nxt_task_t *task, nxt_router_conf_t *rtcf, + nxt_http_action_t *action, nxt_http_action_conf_t *acf) { nxt_mp_t *mp; nxt_int_t ret; @@ -69,6 +74,13 @@ nxt_http_compress_init(nxt_router_conf_t *rtcf, nxt_http_action_t *action, return NXT_ERROR; } + if (conf->mtypes != NULL) { + conf->mtrule = nxt_http_route_types_rule_create(task, mp, conf->mtypes); + if (nxt_slow_path(conf->mtrule == NULL)) { + return NXT_ERROR; + } + } + if (NXT_WITH_ZLIB && nxt_str_eq(&conf->encoding, "gzip", strlen("gzip"))) { conf->handler = nxt_http_compress_gzip; @@ -131,3 +143,24 @@ nxt_http_compress_resp_content_length(nxt_http_response_t *resp) return cl; } + + +nxt_int_t +nxt_http_compressible_mtype(nxt_task_t *task, nxt_http_request_t *r, + nxt_http_route_rule_t *mtrule) +{ + const nxt_str_t *type; + + static nxt_str_t unknown_mtype = nxt_string(""); + + if (mtrule == NULL) { + return 1; + } + + type = r->resp.mtype; + if (type == NULL) { + type = &unknown_mtype; + } + + return nxt_http_route_test_rule(r, mtrule, type->start, type->length); +} |
