mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-03 00:45:49 +00:00
Merge master (0.60.3) into develop (0.70.0-b5)
This commit is contained in:
@@ -9,6 +9,43 @@ If you are using Red Hat Enterprise Linux 7 or CentOS 7, you can [update using `
|
|||||||
|
|
||||||
# Releases
|
# Releases
|
||||||
|
|
||||||
|
## Version 0.60.3
|
||||||
|
|
||||||
|
The `rippled` 0.60.3 release helps to increase the stability of the network under heavy load.
|
||||||
|
|
||||||
|
**New and Updated Features**
|
||||||
|
|
||||||
|
This release has no new features.
|
||||||
|
|
||||||
|
**Bug Fixes**
|
||||||
|
|
||||||
|
Server overlay improvements ([#2110](https://github.com/ripple/rippled/pull/2011))
|
||||||
|
|
||||||
|
## Version 0.60.2
|
||||||
|
|
||||||
|
The `rippled` 0.60.2 release further strengthens handling of cases associated with a previously patched exploit, in which NoRipple flags were being bypassed by using offers.
|
||||||
|
|
||||||
|
**New and Updated Features**
|
||||||
|
|
||||||
|
This release has no new features.
|
||||||
|
|
||||||
|
**Bug Fixes**
|
||||||
|
|
||||||
|
Prevent the ability to bypass the `NoRipple` flag using offers ([#7cd4d78](https://github.com/ripple/rippled/commit/4ff40d4954dfaa237c8b708c2126cb39566776da))
|
||||||
|
|
||||||
|
## Version 0.60.1
|
||||||
|
|
||||||
|
The `rippled` 0.60.1 release corrects a technical flaw that resulted from using 32-bit space identifiers instead of the protocol-defined 16-bit values for Escrow and Payment Channel ledger entries. rippled version 0.60.1 also fixes a problem where the WebSocket timeout timer would not be cancelled when certain errors occurred during subscription streams. Ripple requires upgrading to rippled version 0.60.1 immediately.
|
||||||
|
|
||||||
|
**New and Updated Feature**
|
||||||
|
|
||||||
|
This release has no new features.
|
||||||
|
|
||||||
|
**Bug Fixes**
|
||||||
|
|
||||||
|
Correct calculation of Escrow and Payment Channel indices.
|
||||||
|
Fix WebSocket timeout timer issues.
|
||||||
|
|
||||||
## Version 0.60.0
|
## Version 0.60.0
|
||||||
|
|
||||||
The `rippled` 0.60.0 release introduces several enhancements that improve the reliability and scalability of the Ripple Consensus Ledger (RCL), including features that add ledger interoperability by improving Interledger Protocol compatibility. Ripple recommends that all server operators upgrade to version 0.60.0 by Thursday, 2017-03-30, for service continuity.
|
The `rippled` 0.60.0 release introduces several enhancements that improve the reliability and scalability of the Ripple Consensus Ledger (RCL), including features that add ledger interoperability by improving Interledger Protocol compatibility. Ripple recommends that all server operators upgrade to version 0.60.0 by Thursday, 2017-03-30, for service continuity.
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ if [ -x $HOME/bin/g++ ]; then
|
|||||||
$HOME/bin/g++ -v
|
$HOME/bin/g++ -v
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
pip install --user requests==2.13.0
|
||||||
pip install --user https://github.com/codecov/codecov-python/archive/master.zip
|
pip install --user https://github.com/codecov/codecov-python/archive/master.zip
|
||||||
|
|
||||||
bash bin/sh/install-boost.sh
|
bash bin/sh/install-boost.sh
|
||||||
|
|||||||
@@ -210,6 +210,12 @@ PeerImp::send (Message::pointer const& m)
|
|||||||
// a small senq periodically
|
// a small senq periodically
|
||||||
large_sendq_ = 0;
|
large_sendq_ = 0;
|
||||||
}
|
}
|
||||||
|
else if ((sendq_size % Tuning::sendQueueLogFreq) == 0)
|
||||||
|
{
|
||||||
|
JLOG (journal_.debug()) <<
|
||||||
|
(name_.empty() ? remote_address_.to_string() : name_) <<
|
||||||
|
" sendq: " << sendq_size;
|
||||||
|
}
|
||||||
|
|
||||||
send_queue_.push(m);
|
send_queue_.push(m);
|
||||||
|
|
||||||
@@ -442,7 +448,9 @@ PeerImp::fail(std::string const& reason)
|
|||||||
shared_from_this(), reason));
|
shared_from_this(), reason));
|
||||||
if (socket_.is_open())
|
if (socket_.is_open())
|
||||||
{
|
{
|
||||||
JLOG (journal_.warn()) << reason;
|
JLOG (journal_.warn()) <<
|
||||||
|
(name_.empty() ? remote_address_.to_string() : name_) <<
|
||||||
|
" failed: " << reason;
|
||||||
}
|
}
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,13 +52,13 @@ enum
|
|||||||
|
|
||||||
/** How many milliseconds to consider high latency
|
/** How many milliseconds to consider high latency
|
||||||
on a peer connection */
|
on a peer connection */
|
||||||
peerHighLatency = 250,
|
peerHighLatency = 300,
|
||||||
|
|
||||||
/** How often we check connections (seconds) */
|
/** How often we check connections (seconds) */
|
||||||
checkSeconds = 10,
|
checkSeconds = 32,
|
||||||
|
|
||||||
/** How often we latency/sendq probe connections */
|
/** How often we latency/sendq probe connections */
|
||||||
timerSeconds = 4,
|
timerSeconds = 8,
|
||||||
|
|
||||||
/** How many timer intervals a sendq has to stay large before we disconnect */
|
/** How many timer intervals a sendq has to stay large before we disconnect */
|
||||||
sendqIntervals = 4,
|
sendqIntervals = 4,
|
||||||
@@ -67,10 +67,13 @@ enum
|
|||||||
noPing = 10,
|
noPing = 10,
|
||||||
|
|
||||||
/** How many messages on a send queue before we refuse queries */
|
/** How many messages on a send queue before we refuse queries */
|
||||||
dropSendQueue = 8,
|
dropSendQueue = 192,
|
||||||
|
|
||||||
/** How many messages we consider reasonable sustained on a send queue */
|
/** How many messages we consider reasonable sustained on a send queue */
|
||||||
targetSendQueue = 16,
|
targetSendQueue = 128,
|
||||||
|
|
||||||
|
/** How often to log send queue size */
|
||||||
|
sendQueueLogFreq = 64,
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Tuning
|
} // Tuning
|
||||||
|
|||||||
@@ -129,6 +129,30 @@ Bootcache::insert (beast::IP::Endpoint const& endpoint)
|
|||||||
return result.second;
|
return result.second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
Bootcache::insertStatic (beast::IP::Endpoint const& endpoint)
|
||||||
|
{
|
||||||
|
auto result (m_map.insert (
|
||||||
|
value_type (endpoint, staticValence)));
|
||||||
|
|
||||||
|
if (! result.second && (result.first->right.valence() < staticValence))
|
||||||
|
{
|
||||||
|
// An existing entry has too low a valence, replace it
|
||||||
|
m_map.erase (result.first);
|
||||||
|
result = m_map.insert (
|
||||||
|
value_type (endpoint, staticValence));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.second)
|
||||||
|
{
|
||||||
|
JLOG(m_journal.trace()) << beast::leftw (18) <<
|
||||||
|
"Bootcache insert " << endpoint;
|
||||||
|
prune ();
|
||||||
|
flagForUpdate();
|
||||||
|
}
|
||||||
|
return result.second;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Bootcache::on_success (beast::IP::Endpoint const& endpoint)
|
Bootcache::on_success (beast::IP::Endpoint const& endpoint)
|
||||||
{
|
{
|
||||||
@@ -197,7 +221,13 @@ Bootcache::periodicActivity ()
|
|||||||
void
|
void
|
||||||
Bootcache::onWrite (beast::PropertyStream::Map& map)
|
Bootcache::onWrite (beast::PropertyStream::Map& map)
|
||||||
{
|
{
|
||||||
map ["entries"] = std::uint32_t (m_map.size());
|
beast::PropertyStream::Set entries ("entries", map);
|
||||||
|
for (auto iter = m_map.right.begin(); iter != m_map.right.end(); ++iter)
|
||||||
|
{
|
||||||
|
beast::PropertyStream::Map entry (entries);
|
||||||
|
entry["endpoint"] = iter->get_left().to_string();
|
||||||
|
entry["valence"] = std::int32_t (iter->get_right().valence());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks the cache size and prunes if its over the limit.
|
// Checks the cache size and prunes if its over the limit.
|
||||||
|
|||||||
@@ -110,6 +110,8 @@ private:
|
|||||||
bool m_needsUpdate;
|
bool m_needsUpdate;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static constexpr int staticValence = 32;
|
||||||
|
|
||||||
using iterator = boost::transform_iterator <Transform,
|
using iterator = boost::transform_iterator <Transform,
|
||||||
map_type::right_map::const_iterator>;
|
map_type::right_map::const_iterator>;
|
||||||
|
|
||||||
@@ -140,9 +142,12 @@ public:
|
|||||||
/** Load the persisted data from the Store into the container. */
|
/** Load the persisted data from the Store into the container. */
|
||||||
void load ();
|
void load ();
|
||||||
|
|
||||||
/** Add the address to the cache. */
|
/** Add a newly-learned address to the cache. */
|
||||||
bool insert (beast::IP::Endpoint const& endpoint);
|
bool insert (beast::IP::Endpoint const& endpoint);
|
||||||
|
|
||||||
|
/** Add a staticallyconfigured address to the cache. */
|
||||||
|
bool insertStatic (beast::IP::Endpoint const& endpoint);
|
||||||
|
|
||||||
/** Called when an outbound connection handshake completes. */
|
/** Called when an outbound connection handshake completes. */
|
||||||
void on_success (beast::IP::Endpoint const& endpoint);
|
void on_success (beast::IP::Endpoint const& endpoint);
|
||||||
|
|
||||||
|
|||||||
@@ -990,7 +990,7 @@ public:
|
|||||||
std::lock_guard<std::recursive_mutex> _(lock_);
|
std::lock_guard<std::recursive_mutex> _(lock_);
|
||||||
for (auto addr : list)
|
for (auto addr : list)
|
||||||
{
|
{
|
||||||
if (bootcache_.insert (addr))
|
if (bootcache_.insertStatic (addr))
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
|
|||||||
Reference in New Issue
Block a user