Move connection state logic to an earlier point (#816)

This commit is contained in:
Alex Kremer
2023-08-09 16:42:33 +01:00
committed by GitHub
parent fc1b5ae4da
commit db4046e02a
2 changed files with 5 additions and 20 deletions

View File

@@ -39,25 +39,9 @@ using namespace clio;
static boost::beast::websocket::stream_base::timeout static boost::beast::websocket::stream_base::timeout
make_TimeoutOption() make_TimeoutOption()
{
// See #289 for details.
// TODO: investigate the issue and find if there is a solution other than
// introducing artificial timeouts.
if (true)
{
// The only difference between this and the suggested client role is
// that idle_timeout is set to 20 instead of none()
auto opt = boost::beast::websocket::stream_base::timeout{};
opt.handshake_timeout = std::chrono::seconds(30);
opt.idle_timeout = std::chrono::seconds(20);
opt.keep_alive_pings = false;
return opt;
}
else
{ {
return boost::beast::websocket::stream_base::timeout::suggested(boost::beast::role_type::client); return boost::beast::websocket::stream_base::timeout::suggested(boost::beast::role_type::client);
} }
}
void void
PlainSource::close(bool startAgain) PlainSource::close(bool startAgain)
@@ -142,6 +126,7 @@ PlainSource::onConnect(
} }
else else
{ {
connected_ = true;
numFailures_ = 0; numFailures_ = 0;
// Websocket stream has it's own timeout system // Websocket stream has it's own timeout system
@@ -172,6 +157,7 @@ SslSource::onConnect(boost::beast::error_code ec, boost::asio::ip::tcp::resolver
} }
else else
{ {
connected_ = true;
numFailures_ = 0; numFailures_ = 0;
// Websocket stream has it's own timeout system // Websocket stream has it's own timeout system

View File

@@ -135,7 +135,6 @@ class SourceImpl : public Source
std::shared_ptr<NetworkValidatedLedgers> networkValidatedLedgers_; std::shared_ptr<NetworkValidatedLedgers> networkValidatedLedgers_;
mutable std::mutex mtx_; mutable std::mutex mtx_;
std::atomic_bool connected_{false};
// true if this ETL source is forwarding transactions received on the transactions_proposed stream. There are // true if this ETL source is forwarding transactions received on the transactions_proposed stream. There are
// usually multiple ETL sources, so to avoid forwarding the same transaction multiple times, we only forward from // usually multiple ETL sources, so to avoid forwarding the same transaction multiple times, we only forward from
@@ -165,6 +164,7 @@ protected:
std::atomic_bool closing_{false}; std::atomic_bool closing_{false};
std::atomic_bool paused_{false}; std::atomic_bool paused_{false};
std::atomic_bool connected_{false};
SourceHooks hooks_; SourceHooks hooks_;
@@ -261,7 +261,7 @@ public:
<< "request = " << boost::json::serialize(request); << "request = " << boost::json::serialize(request);
boost::json::object response; boost::json::object response;
if (!connected_) if (!isConnected())
{ {
log_.error() << "Attempted to proxy but failed to connect to tx"; log_.error() << "Attempted to proxy but failed to connect to tx";
return {}; return {};
@@ -724,7 +724,6 @@ public:
handleMessage(size_t size) handleMessage(size_t size)
{ {
setLastMsgTime(); setLastMsgTime();
connected_ = true;
try try
{ {