mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Don't use MultiSocket in Overlay:
The MultiSocket is obsolete technology which is superceded by a more straightforward, template based implementation that is compatible with boost::asio::coroutines. This removes support for the unused PROXY handshake feature. After this change a large number of classes and source files may be removed.
This commit is contained in:
@@ -25,24 +25,21 @@
|
||||
|
||||
namespace ripple {
|
||||
|
||||
PeerImp::PeerImp (NativeSocketType&& socket, beast::IP::Endpoint remoteAddress,
|
||||
PeerImp::PeerImp (socket_type&& socket, beast::IP::Endpoint remoteAddress,
|
||||
OverlayImpl& overlay, Resource::Manager& resourceManager,
|
||||
PeerFinder::Manager& peerFinder, PeerFinder::Slot::ptr const& slot,
|
||||
boost::asio::ssl::context& ssl_context, MultiSocket::Flag flags)
|
||||
: m_owned_socket (std::move (socket))
|
||||
, journal_ (deprecatedLogs().journal("Peer"))
|
||||
boost::asio::ssl::context& ssl_context)
|
||||
: journal_ (deprecatedLogs().journal("Peer"))
|
||||
, socket_ (std::move (socket))
|
||||
, stream_ (socket_, ssl_context)
|
||||
, strand_ (socket_.get_io_service())
|
||||
, timer_ (socket_.get_io_service())
|
||||
, remote_address_ (remoteAddress)
|
||||
, resourceManager_ (resourceManager)
|
||||
, peerFinder_ (peerFinder)
|
||||
, overlay_ (overlay)
|
||||
, m_inbound (true)
|
||||
, socket_ (MultiSocket::New (
|
||||
m_owned_socket, ssl_context, flags.asBits ()))
|
||||
, strand_ (m_owned_socket.get_io_service())
|
||||
, state_ (stateConnected)
|
||||
, minLedger_ (0)
|
||||
, maxLedger_ (0)
|
||||
, timer_ (m_owned_socket.get_io_service())
|
||||
, slot_ (slot)
|
||||
, message_stream_(*this)
|
||||
{
|
||||
@@ -52,21 +49,18 @@ PeerImp::PeerImp (beast::IP::Endpoint remoteAddress,
|
||||
boost::asio::io_service& io_service, OverlayImpl& overlay,
|
||||
Resource::Manager& resourceManager, PeerFinder::Manager& peerFinder,
|
||||
PeerFinder::Slot::ptr const& slot,
|
||||
boost::asio::ssl::context& ssl_context, MultiSocket::Flag flags)
|
||||
: m_owned_socket (io_service)
|
||||
, journal_ (deprecatedLogs().journal("Peer"))
|
||||
boost::asio::ssl::context& ssl_context)
|
||||
: journal_ (deprecatedLogs().journal("Peer"))
|
||||
, socket_ (io_service)
|
||||
, stream_ (socket_, ssl_context)
|
||||
, strand_ (socket_.get_io_service())
|
||||
, timer_ (socket_.get_io_service())
|
||||
, remote_address_ (remoteAddress)
|
||||
, resourceManager_ (resourceManager)
|
||||
, peerFinder_ (peerFinder)
|
||||
, overlay_ (overlay)
|
||||
, m_inbound (false)
|
||||
, socket_ (MultiSocket::New (
|
||||
io_service, ssl_context, flags.asBits ()))
|
||||
, strand_ (io_service)
|
||||
, state_ (stateConnecting)
|
||||
, minLedger_ (0)
|
||||
, maxLedger_ (0)
|
||||
, timer_ (io_service)
|
||||
, slot_ (slot)
|
||||
, message_stream_(*this)
|
||||
{
|
||||
@@ -94,8 +88,8 @@ PeerImp::close()
|
||||
&PeerImp::close, shared_from_this()));
|
||||
|
||||
error_code ec;
|
||||
timer_.cancel (ec);
|
||||
socket_->close(ec);
|
||||
timer_.cancel(ec);
|
||||
stream_.next_layer().close(ec);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -317,7 +311,7 @@ void PeerImp::do_connect ()
|
||||
return detach ("do_connect");
|
||||
}
|
||||
|
||||
socket_->next_layer <NativeSocketType>().async_connect (
|
||||
stream_.next_layer().async_connect (
|
||||
beast::IPAddressConversion::to_asio_endpoint (remote_address_),
|
||||
strand_.wrap (std::bind (&PeerImp::on_connect,
|
||||
shared_from_this (), beast::asio::placeholders::error)));
|
||||
@@ -329,10 +323,9 @@ PeerImp::on_connect (error_code ec)
|
||||
if (detaching_ || ec == boost::asio::error::operation_aborted)
|
||||
return;
|
||||
|
||||
NativeSocketType::endpoint_type local_endpoint;
|
||||
socket_type::endpoint_type local_endpoint;
|
||||
if (! ec)
|
||||
local_endpoint = socket_->this_layer <
|
||||
NativeSocketType> ().local_endpoint (ec);
|
||||
local_endpoint = stream_.next_layer().local_endpoint (ec);
|
||||
|
||||
if (ec)
|
||||
{
|
||||
@@ -349,8 +342,8 @@ PeerImp::on_connect (error_code ec)
|
||||
beast::IPAddressConversion::from_asio (local_endpoint)))
|
||||
return detach("dup");
|
||||
|
||||
socket_->set_verify_mode (boost::asio::ssl::verify_none);
|
||||
socket_->async_handshake (
|
||||
stream_.set_verify_mode (boost::asio::ssl::verify_none);
|
||||
stream_.async_handshake (
|
||||
boost::asio::ssl::stream_base::client,
|
||||
strand_.wrap (std::bind (&PeerImp::on_connect_ssl,
|
||||
std::static_pointer_cast <PeerImp> (shared_from_this ()),
|
||||
@@ -366,7 +359,7 @@ PeerImp::make_request()
|
||||
m.url ("/");
|
||||
m.version (1, 1);
|
||||
m.headers.append ("User-Agent", BuildInfo::getFullVersionString());
|
||||
//m.headers.append ("Local-Address", socket_->
|
||||
//m.headers.append ("Local-Address", stream_.
|
||||
m.headers.append ("Remote-Address", remote_address_.to_string());
|
||||
m.headers.append ("Upgrade",
|
||||
std::string("Ripple/") + to_string (BuildInfo::getCurrentProtocol()));
|
||||
@@ -431,7 +424,7 @@ PeerImp::on_write_http_request (error_code ec, std::size_t bytes_transferred)
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->async_write_some (write_buffer_.data(),
|
||||
stream_.async_write_some (write_buffer_.data(),
|
||||
strand_.wrap (std::bind (&PeerImp::on_write_http_request,
|
||||
shared_from_this(), beast::asio::placeholders::error,
|
||||
beast::asio::placeholders::bytes_transferred)));
|
||||
@@ -489,7 +482,7 @@ PeerImp::on_read_http_response (error_code ec, std::size_t bytes_transferred)
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
stream_.async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
strand_.wrap (std::bind (&PeerImp::on_read_http_response,
|
||||
shared_from_this(), beast::asio::placeholders::error,
|
||||
beast::asio::placeholders::bytes_transferred)));
|
||||
@@ -515,8 +508,8 @@ void PeerImp::do_accept ()
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->set_verify_mode (boost::asio::ssl::verify_none);
|
||||
socket_->async_handshake (boost::asio::ssl::stream_base::server,
|
||||
stream_.set_verify_mode (boost::asio::ssl::verify_none);
|
||||
stream_.async_handshake (boost::asio::ssl::stream_base::server,
|
||||
strand_.wrap (std::bind (&PeerImp::on_accept_ssl,
|
||||
std::static_pointer_cast <PeerImp> (shared_from_this ()),
|
||||
beast::asio::placeholders::error)));
|
||||
@@ -577,7 +570,7 @@ PeerImp::on_read_http_detect (error_code ec, std::size_t bytes_transferred)
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
stream_.async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
strand_.wrap (std::bind (&PeerImp::on_read_http_detect,
|
||||
shared_from_this(), beast::asio::placeholders::error,
|
||||
beast::asio::placeholders::bytes_transferred)));
|
||||
@@ -644,7 +637,7 @@ PeerImp::on_read_http_request (error_code ec, std::size_t bytes_transferred)
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
stream_.async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
strand_.wrap (std::bind (&PeerImp::on_read_http_request,
|
||||
shared_from_this(), beast::asio::placeholders::error,
|
||||
beast::asio::placeholders::bytes_transferred)));
|
||||
@@ -681,7 +674,7 @@ PeerImp::on_write_http_response (error_code ec, std::size_t bytes_transferred)
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->async_write_some (write_buffer_.data(),
|
||||
stream_.async_write_some (write_buffer_.data(),
|
||||
strand_.wrap (std::bind (&PeerImp::on_write_http_response,
|
||||
shared_from_this(), beast::asio::placeholders::error,
|
||||
beast::asio::placeholders::bytes_transferred)));
|
||||
@@ -731,7 +724,7 @@ PeerImp::on_read_protocol (error_code ec, std::size_t bytes_transferred)
|
||||
return;
|
||||
}
|
||||
|
||||
socket_->async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
stream_.async_read_some (read_buffer_.prepare (Tuning::readBufferBytes),
|
||||
strand_.wrap (std::bind (&PeerImp::on_read_protocol,
|
||||
shared_from_this(), beast::asio::placeholders::error,
|
||||
beast::asio::placeholders::bytes_transferred)));
|
||||
@@ -2137,15 +2130,14 @@ PeerImp::detach (const char* rsn, bool graceful)
|
||||
|
||||
if (graceful)
|
||||
{
|
||||
socket_->async_shutdown (
|
||||
strand_.wrap ( std::bind(
|
||||
&PeerImp::handleShutdown,
|
||||
std::static_pointer_cast <PeerImp> (shared_from_this ()),
|
||||
stream_.async_shutdown (strand_.wrap (std::bind(
|
||||
&PeerImp::handleShutdown, shared_from_this(),
|
||||
beast::asio::placeholders::error)));
|
||||
}
|
||||
else
|
||||
{
|
||||
socket_->cancel ();
|
||||
error_code ec;
|
||||
stream_.next_layer().cancel(ec);
|
||||
}
|
||||
|
||||
// VFALCO TODO Stop doing this.
|
||||
@@ -2187,7 +2179,7 @@ PeerImp::sendForce (const Message::pointer& packet)
|
||||
{
|
||||
send_packet_ = packet;
|
||||
|
||||
boost::asio::async_write (*socket_,
|
||||
boost::asio::async_write (stream_,
|
||||
boost::asio::buffer (packet->getBuffer ()),
|
||||
strand_.wrap (std::bind (
|
||||
&PeerImp::handleWrite,
|
||||
@@ -2219,7 +2211,7 @@ PeerImp::hashLatestFinishedMessage (const SSL *sslSession, unsigned char *hash,
|
||||
bool
|
||||
PeerImp::calculateSessionCookie ()
|
||||
{
|
||||
SSL* ssl = socket_->ssl_handle ();
|
||||
SSL* ssl = stream_.native_handle();
|
||||
|
||||
if (!ssl)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user