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

Method NTCP2Session

libi2pd/NTCP2.cpp:519–554  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

517 }
518
519 NTCP2Session::NTCP2Session (NTCP2Server& server, std::shared_ptr<const i2p::data::RouterInfo> in_RemoteRouter,
520 std::shared_ptr<const i2p::data::RouterInfo::Address> addr):
521 TransportSession (in_RemoteRouter, NTCP2_ESTABLISH_TIMEOUT),
522 m_Server (server), m_Socket (m_Server.GetService ()),
523 m_IsEstablished (false), m_IsTerminated (false),
524 m_Establisher (new NTCP2Establisher),
525 m_SendKey (nullptr), m_ReceiveKey (nullptr),
526#if OPENSSL_SIPHASH
527 m_SendMDCtx(nullptr), m_ReceiveMDCtx (nullptr),
528#else
529 m_SendSipKey (nullptr), m_ReceiveSipKey (nullptr),
530#endif
531 m_NextReceivedLen (0), m_NextReceivedBuffer (nullptr), m_NextSendBuffer (nullptr),
532 m_NextReceivedBufferSize (0), m_ReceiveSequenceNumber (0), m_SendSequenceNumber (0),
533 m_IsSending (false), m_IsReceiving (false), m_NextRouterInfoResendTime (0),
534 m_NextPaddingSize (16)
535 {
536 if (in_RemoteRouter) // Alice
537 {
538 m_Establisher->m_RemoteIdentHash = GetRemoteIdentity ()->GetIdentHash ();
539 if (addr)
540 {
541 memcpy (m_Establisher->m_RemoteStaticKey, addr->s, 32);
542 memcpy (m_Establisher->m_IV, addr->i, 16);
543 m_RemoteEndpoint = boost::asio::ip::tcp::endpoint (addr->host, addr->port);
544#if OPENSSL_PQ
545 if (m_Server.GetVersion () > 2) // we support post quantum in config
546 m_Establisher->SetVersion (addr->v);
547#endif
548 if (addr->v > 2 && in_RemoteRouter->GetVersion () >= MAKE_VERSION_NUMBER(0, 9, 69)) // 0.9.69
549 m_Establisher->m_IsLongPadding = true;
550 }
551 else
552 LogPrint (eLogWarning, "NTCP2: Missing NTCP2 address");
553 }
554 }
555
556 NTCP2Session::~NTCP2Session ()
557 {

Callers

nothing calls this directly

Calls 3

LogPrintFunction · 0.85
GetVersionMethod · 0.45
SetVersionMethod · 0.45

Tested by

no test coverage detected