|
|
@ -680,10 +680,14 @@ namespace transport |
|
|
|
size_t payloadSize = 7; |
|
|
|
size_t payloadSize = 7; |
|
|
|
if (GetRouterStatus () == eRouterStatusFirewalled && m_Address->IsIntroducer ()) |
|
|
|
if (GetRouterStatus () == eRouterStatusFirewalled && m_Address->IsIntroducer ()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// relay tag request
|
|
|
|
if (!m_Server.IsMaxNumIntroducers (m_RemoteEndpoint.address ().is_v4 ()) || |
|
|
|
payload[payloadSize] = eSSU2BlkRelayTagRequest; |
|
|
|
m_Server.GetRng ()() & 0x01) // request tag with probability 1/2 if we have enough introducers
|
|
|
|
memset (payload + payloadSize + 1, 0, 2); // size = 0
|
|
|
|
{ |
|
|
|
payloadSize += 3; |
|
|
|
// relay tag request
|
|
|
|
|
|
|
|
payload[payloadSize] = eSSU2BlkRelayTagRequest; |
|
|
|
|
|
|
|
memset (payload + payloadSize + 1, 0, 2); // size = 0
|
|
|
|
|
|
|
|
payloadSize += 3; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
payloadSize += CreatePaddingBlock (payload + payloadSize, 40 - payloadSize, 1); |
|
|
|
payloadSize += CreatePaddingBlock (payload + payloadSize, 40 - payloadSize, 1); |
|
|
|
// KDF for session request
|
|
|
|
// KDF for session request
|
|
|
|