nghttpx: Add --frontend-http3-read-timeout option
Add --frontend-http3-read-timeout option. QUIC idle timeout option will be added later.
This commit is contained in:
parent
bed00fb8e1
commit
717e7ae8b2
|
@ -180,6 +180,7 @@ OPTIONS = [
|
||||||
"bpf-program-file",
|
"bpf-program-file",
|
||||||
"no-bpf",
|
"no-bpf",
|
||||||
"http2-altsvc",
|
"http2-altsvc",
|
||||||
|
"frontend-http3-read-timeout",
|
||||||
]
|
]
|
||||||
|
|
||||||
LOGVARS = [
|
LOGVARS = [
|
||||||
|
|
14
src/shrpx.cc
14
src/shrpx.cc
|
@ -1590,6 +1590,9 @@ void fill_default_config(Config *config) {
|
||||||
// Read timeout for HTTP2 upstream connection
|
// Read timeout for HTTP2 upstream connection
|
||||||
timeoutconf.http2_read = 3_min;
|
timeoutconf.http2_read = 3_min;
|
||||||
|
|
||||||
|
// Read timeout for HTTP3 upstream connection
|
||||||
|
timeoutconf.http3_read = 3_min;
|
||||||
|
|
||||||
// Read timeout for non-HTTP2 upstream connection
|
// Read timeout for non-HTTP2 upstream connection
|
||||||
timeoutconf.read = 1_min;
|
timeoutconf.read = 1_min;
|
||||||
|
|
||||||
|
@ -2073,6 +2076,10 @@ Timeout:
|
||||||
Specify read timeout for HTTP/2 frontend connection.
|
Specify read timeout for HTTP/2 frontend connection.
|
||||||
Default: )"
|
Default: )"
|
||||||
<< util::duration_str(config->conn.upstream.timeout.http2_read) << R"(
|
<< util::duration_str(config->conn.upstream.timeout.http2_read) << R"(
|
||||||
|
--frontend-http3-read-timeout=<DURATION>
|
||||||
|
Specify read timeout for HTTP/3 frontend connection.
|
||||||
|
Default: )"
|
||||||
|
<< util::duration_str(config->conn.upstream.timeout.http3_read) << R"(
|
||||||
--frontend-read-timeout=<DURATION>
|
--frontend-read-timeout=<DURATION>
|
||||||
Specify read timeout for HTTP/1.1 frontend connection.
|
Specify read timeout for HTTP/1.1 frontend connection.
|
||||||
Default: )"
|
Default: )"
|
||||||
|
@ -3589,6 +3596,8 @@ int main(int argc, char **argv) {
|
||||||
{SHRPX_OPT_BPF_PROGRAM_FILE.c_str(), required_argument, &flag, 169},
|
{SHRPX_OPT_BPF_PROGRAM_FILE.c_str(), required_argument, &flag, 169},
|
||||||
{SHRPX_OPT_NO_BPF.c_str(), no_argument, &flag, 170},
|
{SHRPX_OPT_NO_BPF.c_str(), no_argument, &flag, 170},
|
||||||
{SHRPX_OPT_HTTP2_ALTSVC.c_str(), required_argument, &flag, 171},
|
{SHRPX_OPT_HTTP2_ALTSVC.c_str(), required_argument, &flag, 171},
|
||||||
|
{SHRPX_OPT_FRONTEND_HTTP3_READ_TIMEOUT.c_str(), required_argument,
|
||||||
|
&flag, 172},
|
||||||
{nullptr, 0, nullptr, 0}};
|
{nullptr, 0, nullptr, 0}};
|
||||||
|
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
|
@ -4404,6 +4413,11 @@ int main(int argc, char **argv) {
|
||||||
// --http2-altsvc
|
// --http2-altsvc
|
||||||
cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_ALTSVC, StringRef{optarg});
|
cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_ALTSVC, StringRef{optarg});
|
||||||
break;
|
break;
|
||||||
|
case 172:
|
||||||
|
// --frontend-http3-read-timeout
|
||||||
|
cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_HTTP3_READ_TIMEOUT,
|
||||||
|
StringRef{optarg});
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -519,6 +519,10 @@ void ClientHandler::setup_http3_upstream(
|
||||||
upstream_ = std::move(upstream);
|
upstream_ = std::move(upstream);
|
||||||
alpn_ = StringRef::from_lit("h3");
|
alpn_ = StringRef::from_lit("h3");
|
||||||
write_ = &ClientHandler::write_quic;
|
write_ = &ClientHandler::write_quic;
|
||||||
|
|
||||||
|
auto config = get_config();
|
||||||
|
|
||||||
|
reset_upstream_read_timeout(config->conn.upstream.timeout.http3_read);
|
||||||
}
|
}
|
||||||
#endif // ENABLE_HTTP3
|
#endif // ENABLE_HTTP3
|
||||||
|
|
||||||
|
|
|
@ -2393,6 +2393,9 @@ int option_lookup_token(const char *name, size_t namelen) {
|
||||||
if (util::strieq_l("frontend-http2-read-timeou", name, 26)) {
|
if (util::strieq_l("frontend-http2-read-timeou", name, 26)) {
|
||||||
return SHRPX_OPTID_FRONTEND_HTTP2_READ_TIMEOUT;
|
return SHRPX_OPTID_FRONTEND_HTTP2_READ_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
if (util::strieq_l("frontend-http3-read-timeou", name, 26)) {
|
||||||
|
return SHRPX_OPTID_FRONTEND_HTTP3_READ_TIMEOUT;
|
||||||
|
}
|
||||||
if (util::strieq_l("frontend-keep-alive-timeou", name, 26)) {
|
if (util::strieq_l("frontend-keep-alive-timeou", name, 26)) {
|
||||||
return SHRPX_OPTID_FRONTEND_KEEP_ALIVE_TIMEOUT;
|
return SHRPX_OPTID_FRONTEND_KEEP_ALIVE_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -3873,6 +3876,9 @@ int parse_config(Config *config, int optid, const StringRef &opt,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
case SHRPX_OPTID_FRONTEND_HTTP3_READ_TIMEOUT:
|
||||||
|
return parse_duration(&config->conn.upstream.timeout.http3_read, opt,
|
||||||
|
optarg);
|
||||||
case SHRPX_OPTID_CONF:
|
case SHRPX_OPTID_CONF:
|
||||||
LOG(WARN) << "conf: ignored";
|
LOG(WARN) << "conf: ignored";
|
||||||
|
|
||||||
|
|
|
@ -367,6 +367,8 @@ constexpr auto SHRPX_OPT_BPF_PROGRAM_FILE =
|
||||||
StringRef::from_lit("bpf-program-file");
|
StringRef::from_lit("bpf-program-file");
|
||||||
constexpr auto SHRPX_OPT_NO_BPF = StringRef::from_lit("no-bpf");
|
constexpr auto SHRPX_OPT_NO_BPF = StringRef::from_lit("no-bpf");
|
||||||
constexpr auto SHRPX_OPT_HTTP2_ALTSVC = StringRef::from_lit("http2-altsvc");
|
constexpr auto SHRPX_OPT_HTTP2_ALTSVC = StringRef::from_lit("http2-altsvc");
|
||||||
|
constexpr auto SHRPX_OPT_FRONTEND_HTTP3_READ_TIMEOUT =
|
||||||
|
StringRef::from_lit("frontend-http3-read-timeout");
|
||||||
|
|
||||||
constexpr size_t SHRPX_OBFUSCATED_NODE_LENGTH = 8;
|
constexpr size_t SHRPX_OBFUSCATED_NODE_LENGTH = 8;
|
||||||
|
|
||||||
|
@ -955,6 +957,7 @@ struct ConnectionConfig {
|
||||||
struct {
|
struct {
|
||||||
struct {
|
struct {
|
||||||
ev_tstamp http2_read;
|
ev_tstamp http2_read;
|
||||||
|
ev_tstamp http3_read;
|
||||||
ev_tstamp read;
|
ev_tstamp read;
|
||||||
ev_tstamp write;
|
ev_tstamp write;
|
||||||
ev_tstamp idle_read;
|
ev_tstamp idle_read;
|
||||||
|
@ -1160,6 +1163,7 @@ enum {
|
||||||
SHRPX_OPTID_FRONTEND_HTTP2_SETTINGS_TIMEOUT,
|
SHRPX_OPTID_FRONTEND_HTTP2_SETTINGS_TIMEOUT,
|
||||||
SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_BITS,
|
SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_BITS,
|
||||||
SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_SIZE,
|
SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_SIZE,
|
||||||
|
SHRPX_OPTID_FRONTEND_HTTP3_READ_TIMEOUT,
|
||||||
SHRPX_OPTID_FRONTEND_KEEP_ALIVE_TIMEOUT,
|
SHRPX_OPTID_FRONTEND_KEEP_ALIVE_TIMEOUT,
|
||||||
SHRPX_OPTID_FRONTEND_MAX_REQUESTS,
|
SHRPX_OPTID_FRONTEND_MAX_REQUESTS,
|
||||||
SHRPX_OPTID_FRONTEND_NO_TLS,
|
SHRPX_OPTID_FRONTEND_NO_TLS,
|
||||||
|
|
Loading…
Reference in New Issue