MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / Terminate

Method Terminate

libi2pd/SSU2Session.cpp:279–314  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

277 }
278
279 void SSU2Session::Terminate ()
280 {
281 auto state = m_State.exchange (eSSU2SessionStateTerminated);
282 if (state != eSSU2SessionStateTerminated)
283 {
284 m_ConnectTimer.cancel ();
285 m_OnEstablished = nullptr;
286 if (m_RelayTag)
287 m_Server.RemoveRelay (m_RelayTag);
288 m_Server.AddConnectedRecently (m_RemoteEndpoint, GetLastActivityTimestamp ());
289 m_SentHandshakePacket.reset (nullptr);
290 m_SessionConfirmedFragment.reset (nullptr);
291 m_PathChallenge.reset (nullptr);
292#if OPENSSL_PQ
293 m_PQKeys.reset (nullptr);
294#endif
295 if (!m_IntermediateQueue.empty ())
296 m_SendQueue.splice (m_SendQueue.end (), m_IntermediateQueue);
297 for (auto& it: m_SendQueue)
298 it->Drop ();
299 m_SendQueue.clear ();
300 SetSendQueueSize (0);
301 m_SentPackets.clear ();
302 m_IncompleteMessages.clear ();
303 m_RelaySessions.clear ();
304 m_ReceivedI2NPMsgIDs.clear ();
305 m_Server.RemoveSession (m_SourceConnID);
306 transports.PeerDisconnected (shared_from_this ());
307 auto remoteIdentity = GetRemoteIdentity ();
308 if (remoteIdentity)
309 LogPrint (eLogDebug, "SSU2: Session with ", GetRemoteEndpoint (),
310 " (", i2p::data::GetIdentHashAbbreviation (remoteIdentity->GetIdentHash ()), ") terminated");
311 else
312 LogPrint (eLogDebug, "SSU2: Session with ", GetRemoteEndpoint (), " terminated");
313 }
314 }
315
316 void SSU2Session::RequestTermination (SSU2TerminationReason reason)
317 {

Callers

nothing calls this directly

Calls 7

LogPrintFunction · 0.85
GetIdentHashAbbreviationFunction · 0.85
RemoveRelayMethod · 0.80
AddConnectedRecentlyMethod · 0.80
DropMethod · 0.80
PeerDisconnectedMethod · 0.80
RemoveSessionMethod · 0.45

Tested by

no test coverage detected