nghttpx: Simplify
This commit is contained in:
parent
d5efab4993
commit
ef5d981ab1
|
@ -165,6 +165,7 @@ template <typename Memchunk> struct Memchunks {
|
||||||
return append(s, N - 1);
|
return append(s, N - 1);
|
||||||
}
|
}
|
||||||
size_t append(const std::string &s) { return append(s.c_str(), s.size()); }
|
size_t append(const std::string &s) { return append(s.c_str(), s.size()); }
|
||||||
|
size_t append(const StringRef &s) { return append(s.c_str(), s.size()); }
|
||||||
size_t remove(void *dest, size_t count) {
|
size_t remove(void *dest, size_t count) {
|
||||||
if (!tail || count == 0) {
|
if (!tail || count == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -334,18 +334,15 @@ int Http2Session::initiate_connection() {
|
||||||
conn_.set_ssl(ssl);
|
conn_.set_ssl(ssl);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *sni_name = nullptr;
|
StringRef sni_name = !get_config()->backend_tls_sni_name.empty()
|
||||||
if (!get_config()->backend_tls_sni_name.empty()) {
|
? get_config()->backend_tls_sni_name
|
||||||
sni_name = get_config()->backend_tls_sni_name.c_str();
|
: downstream_addr.host;
|
||||||
} else {
|
|
||||||
sni_name = downstream_addr.host.c_str();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sni_name && !util::numeric_host(sni_name)) {
|
if (!util::numeric_host(sni_name.c_str())) {
|
||||||
// TLS extensions: SNI. There is no documentation about the return
|
// TLS extensions: SNI. There is no documentation about the return
|
||||||
// code for this function (actually this is macro wrapping SSL_ctrl
|
// code for this function (actually this is macro wrapping SSL_ctrl
|
||||||
// at the time of this writing).
|
// at the time of this writing).
|
||||||
SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name);
|
SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.c_str());
|
||||||
}
|
}
|
||||||
// If state_ == PROXY_CONNECTED, we has connected to the proxy
|
// If state_ == PROXY_CONNECTED, we has connected to the proxy
|
||||||
// using conn_.fd and tunnel has been established.
|
// using conn_.fd and tunnel has been established.
|
||||||
|
|
|
@ -1365,7 +1365,7 @@ int Http2Upstream::error_reply(Downstream *downstream,
|
||||||
auto html = http::create_error_html(status_code);
|
auto html = http::create_error_html(status_code);
|
||||||
resp.http_status = status_code;
|
resp.http_status = status_code;
|
||||||
auto body = downstream->get_response_buf();
|
auto body = downstream->get_response_buf();
|
||||||
body->append(html.c_str(), html.size());
|
body->append(html);
|
||||||
downstream->set_response_state(Downstream::MSG_COMPLETE);
|
downstream->set_response_state(Downstream::MSG_COMPLETE);
|
||||||
|
|
||||||
nghttp2_data_provider data_prd;
|
nghttp2_data_provider data_prd;
|
||||||
|
|
|
@ -238,14 +238,14 @@ int HttpDownstreamConnection::push_request_headers() {
|
||||||
buf->append(" ");
|
buf->append(" ");
|
||||||
|
|
||||||
if (connect_method) {
|
if (connect_method) {
|
||||||
buf->append(authority.c_str(), authority.size());
|
buf->append(authority);
|
||||||
} else if (get_config()->http2_proxy || get_config()->client_proxy) {
|
} else if (get_config()->http2_proxy || get_config()->client_proxy) {
|
||||||
// Construct absolute-form request target because we are going to
|
// Construct absolute-form request target because we are going to
|
||||||
// send a request to a HTTP/1 proxy.
|
// send a request to a HTTP/1 proxy.
|
||||||
assert(!req.scheme.empty());
|
assert(!req.scheme.empty());
|
||||||
buf->append(req.scheme);
|
buf->append(req.scheme);
|
||||||
buf->append("://");
|
buf->append("://");
|
||||||
buf->append(authority.c_str(), authority.size());
|
buf->append(authority);
|
||||||
buf->append(req.path);
|
buf->append(req.path);
|
||||||
} else if (req.method == HTTP_OPTIONS && req.path.empty()) {
|
} else if (req.method == HTTP_OPTIONS && req.path.empty()) {
|
||||||
// Server-wide OPTIONS
|
// Server-wide OPTIONS
|
||||||
|
@ -254,7 +254,7 @@ int HttpDownstreamConnection::push_request_headers() {
|
||||||
buf->append(req.path);
|
buf->append(req.path);
|
||||||
}
|
}
|
||||||
buf->append(" HTTP/1.1\r\nHost: ");
|
buf->append(" HTTP/1.1\r\nHost: ");
|
||||||
buf->append(authority.c_str(), authority.size());
|
buf->append(authority);
|
||||||
buf->append("\r\n");
|
buf->append("\r\n");
|
||||||
|
|
||||||
http2::build_http1_headers_from_headers(buf, req.fs.headers());
|
http2::build_http1_headers_from_headers(buf, req.fs.headers());
|
||||||
|
@ -402,7 +402,7 @@ int HttpDownstreamConnection::push_upload_data_chunk(const uint8_t *data,
|
||||||
|
|
||||||
if (chunked) {
|
if (chunked) {
|
||||||
auto chunk_size_hex = util::utox(datalen);
|
auto chunk_size_hex = util::utox(datalen);
|
||||||
output->append(chunk_size_hex.c_str(), chunk_size_hex.size());
|
output->append(chunk_size_hex);
|
||||||
output->append("\r\n");
|
output->append("\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -802,8 +802,7 @@ int HttpsUpstream::send_reply(Downstream *downstream, const uint8_t *body,
|
||||||
|
|
||||||
if (!resp.fs.header(http2::HD_SERVER)) {
|
if (!resp.fs.header(http2::HD_SERVER)) {
|
||||||
output->append("Server: ");
|
output->append("Server: ");
|
||||||
const auto &server_name = get_config()->server_name;
|
output->append(get_config()->server_name);
|
||||||
output->append(server_name.c_str(), server_name.size());
|
|
||||||
output->append("\r\n");
|
output->append("\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -838,21 +837,21 @@ void HttpsUpstream::error_reply(unsigned int status_code) {
|
||||||
|
|
||||||
output->append("HTTP/1.1 ");
|
output->append("HTTP/1.1 ");
|
||||||
auto status_str = http2::get_status_string(status_code);
|
auto status_str = http2::get_status_string(status_code);
|
||||||
output->append(status_str.c_str(), status_str.size());
|
output->append(status_str);
|
||||||
output->append("\r\nServer: ");
|
output->append("\r\nServer: ");
|
||||||
const auto &server_name = get_config()->server_name;
|
const auto &server_name = get_config()->server_name;
|
||||||
output->append(server_name.c_str(), server_name.size());
|
output->append(server_name);
|
||||||
output->append("\r\nContent-Length: ");
|
output->append("\r\nContent-Length: ");
|
||||||
auto cl = util::utos(html.size());
|
auto cl = util::utos(html.size());
|
||||||
output->append(cl.c_str(), cl.size());
|
output->append(cl);
|
||||||
output->append("\r\nDate: ");
|
output->append("\r\nDate: ");
|
||||||
auto lgconf = log_config();
|
auto lgconf = log_config();
|
||||||
lgconf->update_tstamp(std::chrono::system_clock::now());
|
lgconf->update_tstamp(std::chrono::system_clock::now());
|
||||||
auto &date = lgconf->time_http_str;
|
auto &date = lgconf->time_http_str;
|
||||||
output->append(date.c_str(), date.size());
|
output->append(date);
|
||||||
output->append("\r\nContent-Type: text/html; "
|
output->append("\r\nContent-Type: text/html; "
|
||||||
"charset=UTF-8\r\nConnection: close\r\n\r\n");
|
"charset=UTF-8\r\nConnection: close\r\n\r\n");
|
||||||
output->append(html.c_str(), html.size());
|
output->append(html);
|
||||||
|
|
||||||
downstream->response_sent_body_length += html.size();
|
downstream->response_sent_body_length += html.size();
|
||||||
downstream->set_response_state(Downstream::MSG_COMPLETE);
|
downstream->set_response_state(Downstream::MSG_COMPLETE);
|
||||||
|
@ -1000,8 +999,7 @@ int HttpsUpstream::on_downstream_header_complete(Downstream *downstream) {
|
||||||
|
|
||||||
if (!get_config()->http2_proxy && !get_config()->client_proxy) {
|
if (!get_config()->http2_proxy && !get_config()->client_proxy) {
|
||||||
buf->append("Server: ");
|
buf->append("Server: ");
|
||||||
const auto &server_name = get_config()->server_name;
|
buf->append(get_config()->server_name);
|
||||||
buf->append(server_name.c_str(), server_name.size());
|
|
||||||
buf->append("\r\n");
|
buf->append("\r\n");
|
||||||
} else {
|
} else {
|
||||||
auto server = resp.fs.header(http2::HD_SERVER);
|
auto server = resp.fs.header(http2::HD_SERVER);
|
||||||
|
@ -1054,10 +1052,8 @@ int HttpsUpstream::on_downstream_body(Downstream *downstream,
|
||||||
}
|
}
|
||||||
auto output = downstream->get_response_buf();
|
auto output = downstream->get_response_buf();
|
||||||
if (downstream->get_chunked_response()) {
|
if (downstream->get_chunked_response()) {
|
||||||
auto chunk_size_hex = util::utox(len);
|
output->append(util::utox(len));
|
||||||
chunk_size_hex += "\r\n";
|
output->append("\r\n");
|
||||||
|
|
||||||
output->append(chunk_size_hex.c_str(), chunk_size_hex.size());
|
|
||||||
}
|
}
|
||||||
output->append(data, len);
|
output->append(data, len);
|
||||||
|
|
||||||
|
|
|
@ -905,7 +905,7 @@ int SpdyUpstream::error_reply(Downstream *downstream,
|
||||||
auto html = http::create_error_html(status_code);
|
auto html = http::create_error_html(status_code);
|
||||||
resp.http_status = status_code;
|
resp.http_status = status_code;
|
||||||
auto body = downstream->get_response_buf();
|
auto body = downstream->get_response_buf();
|
||||||
body->append(html.c_str(), html.size());
|
body->append(html);
|
||||||
downstream->set_response_state(Downstream::MSG_COMPLETE);
|
downstream->set_response_state(Downstream::MSG_COMPLETE);
|
||||||
|
|
||||||
spdylay_data_provider data_prd;
|
spdylay_data_provider data_prd;
|
||||||
|
|
Loading…
Reference in New Issue