internal bool VerifyIdentifiers(
IncomingNetMessage message,
NetworkEndPoint endPoint,
out ushort number
)
{
number = 0;
int payLen = message.m_data.LengthBytes;
if (payLen < 13)
{
if ((m_netBase.m_enabledMessageTypes & NetMessageType.BadMessageReceived) == NetMessageType.BadMessageReceived)
{
m_netBase.NotifyApplication(NetMessageType.BadMessageReceived, "Malformed Discovery message received from " + endPoint, null, message.m_senderEndPoint);
}
return(false);
}
// check app identifier
string appIdent2 = message.m_data.ReadString();
if (appIdent2 != m_netBase.m_config.ApplicationIdentifier)
{
if ((m_netBase.m_enabledMessageTypes & NetMessageType.BadMessageReceived) == NetMessageType.BadMessageReceived)
{
m_netBase.NotifyApplication(NetMessageType.BadMessageReceived, "Discovery for different application identification received: " + appIdent2, null, message.m_senderEndPoint);
}
return(false);
}
// check netbase identifier
byte[] nbid = message.m_data.ReadBytes(m_netBase.m_localRndSignature.Length);
if (NetUtility.CompareElements(nbid, m_netBase.m_localRndSignature))
{
return(false); // don't respond to your own discovery request
}
// retrieve number
number = message.m_data.ReadUInt16();
// it's ok
return(true);
}