mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-24 13:45:52 +00:00
Move connection state logic to an earlier point (#816)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user