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

Method SendLocalRouterInfo

libi2pd/SSU2Session.cpp:359–380  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

357 }
358
359 void SSU2Session::SendLocalRouterInfo (bool update)
360 {
361 if (update || !IsOutgoing ())
362 {
363 auto s = shared_from_this ();
364 boost::asio::post (m_Server.GetService (), [s]()
365 {
366 if (!s->IsEstablished ()) return;
367 uint8_t payload[SSU2_MAX_PACKET_SIZE];
368 size_t payloadSize = s->CreateRouterInfoBlock (payload, s->m_MaxPayloadSize - 32, i2p::context.CopyRouterInfoBuffer ());
369 if (payloadSize)
370 {
371 if (payloadSize < s->m_MaxPayloadSize)
372 payloadSize += s->CreatePaddingBlock (payload + payloadSize, s->m_MaxPayloadSize - payloadSize);
373 s->SendData (payload, payloadSize);
374 }
375 else
376 s->SendFragmentedMessage (CreateDatabaseStoreMsg ());
377 });
378 }
379
380 }
381
382 void SSU2Session::SendI2NPMessages (std::list<std::shared_ptr<I2NPMessage> >& msgs)
383 {

Callers

nothing calls this directly

Calls 7

CreateDatabaseStoreMsgFunction · 0.85
CreateRouterInfoBlockMethod · 0.80
CopyRouterInfoBufferMethod · 0.80
SendDataMethod · 0.80
SendFragmentedMessageMethod · 0.80
IsEstablishedMethod · 0.45
CreatePaddingBlockMethod · 0.45

Tested by

no test coverage detected