mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-12 17:10:20 +03:00
try recently connected SSU2 address if no other transports found
This commit is contained in:
parent
64bde69967
commit
26901e2945
@ -884,7 +884,7 @@ namespace transport
|
|||||||
if (!isValidEndpoint && router->GetProfile ()->HasLastEndpoint (address->IsV4 ()))
|
if (!isValidEndpoint && router->GetProfile ()->HasLastEndpoint (address->IsV4 ()))
|
||||||
{
|
{
|
||||||
// router doesn't publish endpoint, but we connected before and hole punch might be alive
|
// router doesn't publish endpoint, but we connected before and hole punch might be alive
|
||||||
const auto& ep = router->GetProfile ()->GetLastEndpoint ();
|
auto ep = router->GetProfile ()->GetLastEndpoint ();
|
||||||
if (IsConnectedRecently (ep))
|
if (IsConnectedRecently (ep))
|
||||||
{
|
{
|
||||||
if (CheckPendingOutgoingSession (ep, peerTest)) return false;
|
if (CheckPendingOutgoingSession (ep, peerTest)) return false;
|
||||||
|
@ -672,6 +672,31 @@ namespace transport
|
|||||||
if (transport & compatibleTransports)
|
if (transport & compatibleTransports)
|
||||||
peer->priority.push_back (transport);
|
peer->priority.push_back (transport);
|
||||||
}
|
}
|
||||||
|
if (peer->priority.empty ())
|
||||||
|
{
|
||||||
|
// try recently connected SSU2 if any
|
||||||
|
auto supportedTransports = context.GetRouterInfo ().GetCompatibleTransports (false) &
|
||||||
|
peer->router->GetCompatibleTransports (false);
|
||||||
|
if (supportedTransports & (i2p::data::RouterInfo::eSSU2V4 | i2p::data::RouterInfo::eSSU2V6))
|
||||||
|
{
|
||||||
|
auto ep = peer->router->GetProfile ()->GetLastEndpoint ();
|
||||||
|
if (!ep.address ().is_unspecified () && ep.port ())
|
||||||
|
{
|
||||||
|
if (ep.address ().is_v4 ())
|
||||||
|
{
|
||||||
|
if ((supportedTransports & i2p::data::RouterInfo::eSSU2V4) &&
|
||||||
|
m_SSU2Server->IsConnectedRecently (ep))
|
||||||
|
peer->priority.push_back (i2p::data::RouterInfo::eSSU2V4);
|
||||||
|
}
|
||||||
|
else if (ep.address ().is_v6 ())
|
||||||
|
{
|
||||||
|
if ((supportedTransports & i2p::data::RouterInfo::eSSU2V6) &&
|
||||||
|
m_SSU2Server->IsConnectedRecently (ep))
|
||||||
|
peer->priority.push_back (i2p::data::RouterInfo::eSSU2V6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Transports::RequestComplete (std::shared_ptr<const i2p::data::RouterInfo> r, const i2p::data::IdentHash& ident)
|
void Transports::RequestComplete (std::shared_ptr<const i2p::data::RouterInfo> r, const i2p::data::IdentHash& ident)
|
||||||
|
Loading…
Reference in New Issue
Block a user