mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 08:00:38 +03:00
Merge remote-tracking branch 'purple/openssl' into websocks
This commit is contained in:
commit
c5f8e2249e
@ -106,7 +106,8 @@ namespace client
|
|||||||
m_Stream->Close ();
|
m_Stream->Close ();
|
||||||
m_Stream.reset ();
|
m_Stream.reset ();
|
||||||
}
|
}
|
||||||
m_Socket->shutdown(boost::asio::ip::tcp::socket::shutdown_send); // avoid RST
|
boost::system::error_code ec;
|
||||||
|
m_Socket->shutdown(boost::asio::ip::tcp::socket::shutdown_send, ec); // avoid RST
|
||||||
m_Socket->close ();
|
m_Socket->close ();
|
||||||
|
|
||||||
Done(shared_from_this ());
|
Done(shared_from_this ());
|
||||||
|
@ -116,16 +116,10 @@ namespace transport
|
|||||||
|
|
||||||
void NTCPSession::ServerLogin ()
|
void NTCPSession::ServerLogin ()
|
||||||
{
|
{
|
||||||
boost::system::error_code ec;
|
// receive Phase1
|
||||||
auto ep = m_Socket.remote_endpoint(ec);
|
boost::asio::async_read (m_Socket, boost::asio::buffer(&m_Establisher->phase1, sizeof (NTCPPhase1)), boost::asio::transfer_all (),
|
||||||
if (!ec)
|
std::bind(&NTCPSession::HandlePhase1Received, shared_from_this (),
|
||||||
{
|
std::placeholders::_1, std::placeholders::_2));
|
||||||
m_ConnectedFrom = ep.address ();
|
|
||||||
// receive Phase1
|
|
||||||
boost::asio::async_read (m_Socket, boost::asio::buffer(&m_Establisher->phase1, sizeof (NTCPPhase1)), boost::asio::transfer_all (),
|
|
||||||
std::bind(&NTCPSession::HandlePhase1Received, shared_from_this (),
|
|
||||||
std::placeholders::_1, std::placeholders::_2));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NTCPSession::HandlePhase1Sent (const boost::system::error_code& ecode, std::size_t bytes_transferred)
|
void NTCPSession::HandlePhase1Sent (const boost::system::error_code& ecode, std::size_t bytes_transferred)
|
||||||
@ -502,8 +496,6 @@ namespace transport
|
|||||||
if (ecode) {
|
if (ecode) {
|
||||||
if (ecode != boost::asio::error::operation_aborted)
|
if (ecode != boost::asio::error::operation_aborted)
|
||||||
LogPrint (eLogDebug, "NTCP: Read error: ", ecode.message ());
|
LogPrint (eLogDebug, "NTCP: Read error: ", ecode.message ());
|
||||||
if (!m_NumReceivedBytes)
|
|
||||||
m_Server.Ban (m_ConnectedFrom);
|
|
||||||
//if (ecode != boost::asio::error::operation_aborted)
|
//if (ecode != boost::asio::error::operation_aborted)
|
||||||
Terminate ();
|
Terminate ();
|
||||||
}
|
}
|
||||||
@ -890,18 +882,6 @@ namespace transport
|
|||||||
if (!ec)
|
if (!ec)
|
||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "NTCP: Connected from ", ep);
|
LogPrint (eLogDebug, "NTCP: Connected from ", ep);
|
||||||
auto it = m_BanList.find (ep.address ());
|
|
||||||
if (it != m_BanList.end ())
|
|
||||||
{
|
|
||||||
uint32_t ts = i2p::util::GetSecondsSinceEpoch ();
|
|
||||||
if (ts < it->second)
|
|
||||||
{
|
|
||||||
LogPrint (eLogWarning, "NTCP: ", ep.address (), " is banned for ", it->second - ts, " more seconds");
|
|
||||||
conn = nullptr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_BanList.erase (it);
|
|
||||||
}
|
|
||||||
if (conn)
|
if (conn)
|
||||||
conn->ServerLogin ();
|
conn->ServerLogin ();
|
||||||
}
|
}
|
||||||
@ -927,18 +907,6 @@ namespace transport
|
|||||||
if (!ec)
|
if (!ec)
|
||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "NTCP: Connected from ", ep);
|
LogPrint (eLogDebug, "NTCP: Connected from ", ep);
|
||||||
auto it = m_BanList.find (ep.address ());
|
|
||||||
if (it != m_BanList.end ())
|
|
||||||
{
|
|
||||||
uint32_t ts = i2p::util::GetSecondsSinceEpoch ();
|
|
||||||
if (ts < it->second)
|
|
||||||
{
|
|
||||||
LogPrint (eLogWarning, "NTCP: ", ep.address (), " is banned for ", it->second - ts, " more seconds");
|
|
||||||
conn = nullptr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_BanList.erase (it);
|
|
||||||
}
|
|
||||||
if (conn)
|
if (conn)
|
||||||
conn->ServerLogin ();
|
conn->ServerLogin ();
|
||||||
}
|
}
|
||||||
@ -996,13 +964,6 @@ namespace transport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NTCPServer::Ban (const boost::asio::ip::address& addr)
|
|
||||||
{
|
|
||||||
uint32_t ts = i2p::util::GetSecondsSinceEpoch ();
|
|
||||||
m_BanList[addr] = ts + NTCP_BAN_EXPIRATION_TIMEOUT;
|
|
||||||
LogPrint (eLogWarning, "NTCP: ", addr, " has been banned for ", NTCP_BAN_EXPIRATION_TIMEOUT, " seconds");
|
|
||||||
}
|
|
||||||
|
|
||||||
void NTCPServer::ScheduleTermination ()
|
void NTCPServer::ScheduleTermination ()
|
||||||
{
|
{
|
||||||
m_TerminationTimer.expires_from_now (boost::posix_time::seconds(NTCP_TERMINATION_CHECK_TIMEOUT));
|
m_TerminationTimer.expires_from_now (boost::posix_time::seconds(NTCP_TERMINATION_CHECK_TIMEOUT));
|
||||||
|
@ -122,8 +122,6 @@ namespace transport
|
|||||||
|
|
||||||
bool m_IsSending;
|
bool m_IsSending;
|
||||||
std::vector<std::shared_ptr<I2NPMessage> > m_SendQueue;
|
std::vector<std::shared_ptr<I2NPMessage> > m_SendQueue;
|
||||||
|
|
||||||
boost::asio::ip::address m_ConnectedFrom; // for ban
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: move to NTCP.h/.cpp
|
// TODO: move to NTCP.h/.cpp
|
||||||
@ -146,7 +144,6 @@ namespace transport
|
|||||||
bool IsBoundV6() const { return m_NTCPV6Acceptor != nullptr; };
|
bool IsBoundV6() const { return m_NTCPV6Acceptor != nullptr; };
|
||||||
|
|
||||||
boost::asio::io_service& GetService () { return m_Service; };
|
boost::asio::io_service& GetService () { return m_Service; };
|
||||||
void Ban (const boost::asio::ip::address& addr);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -169,7 +166,6 @@ namespace transport
|
|||||||
boost::asio::deadline_timer m_TerminationTimer;
|
boost::asio::deadline_timer m_TerminationTimer;
|
||||||
boost::asio::ip::tcp::acceptor * m_NTCPAcceptor, * m_NTCPV6Acceptor;
|
boost::asio::ip::tcp::acceptor * m_NTCPAcceptor, * m_NTCPV6Acceptor;
|
||||||
std::map<i2p::data::IdentHash, std::shared_ptr<NTCPSession> > m_NTCPSessions; // access from m_Thread only
|
std::map<i2p::data::IdentHash, std::shared_ptr<NTCPSession> > m_NTCPSessions; // access from m_Thread only
|
||||||
std::map<boost::asio::ip::address, uint32_t> m_BanList; // IP -> ban expiration time in seconds
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -464,7 +464,6 @@ namespace transport
|
|||||||
{
|
{
|
||||||
RAND_bytes((uint8_t *)&m_SentRelayTag, 4);
|
RAND_bytes((uint8_t *)&m_SentRelayTag, 4);
|
||||||
if (!m_SentRelayTag) m_SentRelayTag = 1;
|
if (!m_SentRelayTag) m_SentRelayTag = 1;
|
||||||
m_Server.AddRelay (m_SentRelayTag, shared_from_this ());
|
|
||||||
}
|
}
|
||||||
htobe32buf (payload, m_SentRelayTag);
|
htobe32buf (payload, m_SentRelayTag);
|
||||||
payload += 4; // relay tag
|
payload += 4; // relay tag
|
||||||
@ -893,6 +892,8 @@ namespace transport
|
|||||||
transports.PeerConnected (shared_from_this ());
|
transports.PeerConnected (shared_from_this ());
|
||||||
if (m_IsPeerTest)
|
if (m_IsPeerTest)
|
||||||
SendPeerTest ();
|
SendPeerTest ();
|
||||||
|
if (m_SentRelayTag)
|
||||||
|
m_Server.AddRelay (m_SentRelayTag, shared_from_this ());
|
||||||
m_LastActivityTimestamp = i2p::util::GetSecondsSinceEpoch ();
|
m_LastActivityTimestamp = i2p::util::GetSecondsSinceEpoch ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user