diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2023-04-29 14:59:40 -0400 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2023-05-03 23:11:35 -0400 |
commit | c06898cb841c4eaf8dfb7f7225e302a4c289cd0a (patch) | |
tree | 1499c659d2fdd5369ffdb8e810899a6be12b7190 /src/http-header-glue.c | |
parent | 104dd2f9872d1d0be38b444daf0c77f847364ad5 (diff) | |
download | lighttpd-git-c06898cb841c4eaf8dfb7f7225e302a4c289cd0a.tar.gz |
[core] move some shared funcs to call from modules
(e.g. support for HTTP/2 module mod_h2)
Diffstat (limited to 'src/http-header-glue.c')
-rw-r--r-- | src/http-header-glue.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/http-header-glue.c b/src/http-header-glue.c index e2a19c5f..a6e8bd9e 100644 --- a/src/http-header-glue.c +++ b/src/http-header-glue.c @@ -13,6 +13,7 @@ #include "http_date.h" #include "http_etag.h" #include "http_header.h" +#include "plugin_config.h" /* config_feature_bool */ #include "sock_addr.h" #include "stat_cache.h" @@ -140,6 +141,45 @@ int http_response_redirect_to_directory(request_st * const r, int status) { return 0; } + +__attribute_cold__ +void +http_response_delay (connection * const con) +{ + if (config_feature_bool(con->srv, "auth.delay-invalid-creds", 1)){ + /*(delay sending response)*/ + con->is_writable = 0; + con->traffic_limit_reached = 1; + } +} + + +int +http_response_omit_header (request_st * const r, const data_string * const ds) +{ + const size_t klen = buffer_clen(&ds->key); + if (klen == sizeof("X-Sendfile")-1 + && buffer_eq_icase_ssn(ds->key.ptr, CONST_STR_LEN("X-Sendfile"))) + return 1; + if (klen >= sizeof("X-LIGHTTPD-")-1 + && buffer_eq_icase_ssn(ds->key.ptr, CONST_STR_LEN("X-LIGHTTPD-"))) { + if (klen == sizeof("X-LIGHTTPD-KBytes-per-second")-1 + && buffer_eq_icase_ssn(ds->key.ptr+sizeof("X-LIGHTTPD-")-1, + CONST_STR_LEN("KBytes-per-second"))) { + /* "X-LIGHTTPD-KBytes-per-second" */ + off_t limit = strtol(ds->value.ptr, NULL, 10) << 10; /*(*=1024)*/ + if (limit > 0 + && (limit < r->conf.bytes_per_second + || 0 == r->conf.bytes_per_second)) { + r->conf.bytes_per_second = limit; + } + } + return 1; + } + return 0; +} + + #define MTIME_CACHE_MAX 16 struct mtime_cache_type { unix_time64_t mtime; /* key */ |