| 1064 | } |
| 1065 | |
| 1066 | bool SSU2Server::StartPeerTest (std::shared_ptr<const i2p::data::RouterInfo> router, bool v4) |
| 1067 | { |
| 1068 | if (!router) return false; |
| 1069 | auto addr = v4 ? router->GetSSU2V4Address () : router->GetSSU2V6Address (); |
| 1070 | if (!addr) return false; |
| 1071 | auto session = FindSession (router->GetIdentHash ()); |
| 1072 | if (session) |
| 1073 | { |
| 1074 | auto remoteAddr = session->GetAddress (); |
| 1075 | if (!remoteAddr || !remoteAddr->IsPeerTesting () || |
| 1076 | (v4 && !remoteAddr->IsV4 ()) || (!v4 && !remoteAddr->IsV6 ())) return false; |
| 1077 | if (session->IsEstablished ()) |
| 1078 | boost::asio::post (GetService (), [session]() { session->SendPeerTest (); }); |
| 1079 | else |
| 1080 | session->SetOnEstablished ([session]() { session->SendPeerTest (); }); |
| 1081 | return true; |
| 1082 | } |
| 1083 | else |
| 1084 | CreateSession (router, addr, true); |
| 1085 | return true; |
| 1086 | } |
| 1087 | |
| 1088 | void SSU2Server::ScheduleTermination () |
| 1089 | { |
no test coverage detected