mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 04:21:51 +00:00
http: initialize connection type, cleanup
This commit is contained in:
1 parent
9daa7ec283
commit
8a18c591e9
3 files changed
+16
-19
No files matched your search
@@ -310,7 +310,7 @@ private:
|
||||
|
||||
restinio::http_request_header_t header_;
|
||||
std::map<restinio::http_field_t, std::string> headers_;
|
||||
restinio::http_connection_header_t connection_type_;
|
||||
restinio::http_connection_header_t connection_type_ {restinio::http_connection_header_t::close};
|
||||
std::string body_;
|
||||
|
||||
std::mutex cbs_mutex_;
|
||||
|
||||
+10
-14
@@ -270,9 +270,9 @@ DhtProxyClient::get(const InfoHash& key, GetCallback cb, DoneCallback donecb, Va
|
||||
if (logger_)
|
||||
logger_->d("[proxy:client] [get] [search %s]", key.to_c_str());
|
||||
|
||||
auto request = buildRequest("/" + key.toString());
|
||||
auto reqid = request->id();
|
||||
try {
|
||||
auto request = buildRequest("/" + key.toString());
|
||||
auto reqid = request->id();
|
||||
request->set_connection_type(restinio::http_connection_header_t::keep_alive);
|
||||
request->set_method(restinio::http_method_get());
|
||||
setHeaderFields(*request);
|
||||
@@ -343,7 +343,6 @@ DhtProxyClient::get(const InfoHash& key, GetCallback cb, DoneCallback donecb, Va
|
||||
catch (const std::exception &e){
|
||||
if (logger_)
|
||||
logger_->e("[proxy:client] [get %s] error: %s", key.to_c_str(), e.what());
|
||||
requests_.erase(reqid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -438,9 +437,9 @@ DhtProxyClient::doPut(const InfoHash& key, Sp<Value> val, DoneCallbackSimple cb,
|
||||
if (logger_)
|
||||
logger_->d("[proxy:client] [put] [search %s] executing for %s", key.to_c_str(), val->toString().c_str());
|
||||
|
||||
auto request = buildRequest("/" + key.toString());
|
||||
auto reqid = request->id();
|
||||
try {
|
||||
auto request = buildRequest("/" + key.toString());
|
||||
auto reqid = request->id();
|
||||
request->set_method(restinio::http_method_post());
|
||||
setHeaderFields(*request);
|
||||
|
||||
@@ -480,7 +479,6 @@ DhtProxyClient::doPut(const InfoHash& key, Sp<Value> val, DoneCallbackSimple cb,
|
||||
catch (const std::exception &e){
|
||||
if (logger_)
|
||||
logger_->e("[proxy:client] [put %s] error: %s", key.to_c_str(), e.what());
|
||||
requests_.erase(reqid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -564,9 +562,9 @@ DhtProxyClient::queryProxyInfo(std::shared_ptr<InfoState> infoState, sa_family_t
|
||||
{
|
||||
if (logger_)
|
||||
logger_->d("[proxy:client] [status] query ipv%i info", family == AF_INET ? 4 : 6);
|
||||
auto request = std::make_shared<http::Request>(httpContext_, resolver, family);
|
||||
auto reqid = request->id();
|
||||
try {
|
||||
auto request = std::make_shared<http::Request>(httpContext_, resolver, family);
|
||||
auto reqid = request->id();
|
||||
request->set_method(restinio::http_method_get());
|
||||
setHeaderFields(*request);
|
||||
request->add_on_state_change_callback([this, reqid, family, infoState]
|
||||
@@ -605,7 +603,6 @@ DhtProxyClient::queryProxyInfo(std::shared_ptr<InfoState> infoState, sa_family_t
|
||||
catch (const std::exception &e){
|
||||
if (logger_)
|
||||
logger_->e("[proxy:client] [status] error sending request: %s", e.what());
|
||||
requests_.erase(reqid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -901,10 +898,10 @@ DhtProxyClient::sendListen(const restinio::http_request_header_t header,
|
||||
{
|
||||
if (logger_)
|
||||
logger_->e("[proxy:client] [listen] sendListen: %d", (int)method);
|
||||
auto request = buildRequest();
|
||||
listener.request = request;
|
||||
auto reqid = request->id();
|
||||
try {
|
||||
auto request = buildRequest();
|
||||
listener.request = request;
|
||||
auto reqid = request->id();
|
||||
request->set_header(header);
|
||||
setHeaderFields(*request);
|
||||
if (method == ListenMethod::LISTEN)
|
||||
@@ -973,8 +970,7 @@ DhtProxyClient::sendListen(const restinio::http_request_header_t header,
|
||||
}
|
||||
catch (const std::exception &e){
|
||||
if (logger_)
|
||||
logger_->e("[proxy:client] [listen] request #%i failed: %s", reqid, e.what());
|
||||
requests_.erase(reqid);
|
||||
logger_->e("[proxy:client] [listen] request failed: %s", e.what());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -624,14 +624,15 @@ Request::build()
|
||||
std::string conn_str = "";
|
||||
switch (connection_type_){
|
||||
case restinio::http_connection_header_t::upgrade:
|
||||
throw std::invalid_argument("upgrade");
|
||||
if (logger_)
|
||||
logger_->e("Unsupported connection type 'upgrade', fallback to 'close'");
|
||||
// fallthrough
|
||||
case restinio::http_connection_header_t::close:
|
||||
conn_str = "close";
|
||||
break;
|
||||
case restinio::http_connection_header_t::keep_alive:
|
||||
conn_str = "keep-alive";
|
||||
break;
|
||||
case restinio::http_connection_header_t::close:
|
||||
conn_str = "close";
|
||||
connection_type_ = restinio::http_connection_header_t::close;
|
||||
}
|
||||
if (!conn_str.empty())
|
||||
request << "Connection: " << conn_str << "\r\n";
|
||||
|
||||
Reference in new issue
Block a user