// HMAC key to validate ClientHello cookie
private HMAC currentCookieHmac;
- private readonly ConcurrentDictionary<EndPoint, PeerData> existingPeers = new ConcurrentDictionary<EndPoint, PeerData>();
+ private readonly ConcurrentDictionary<IPEndPoint, PeerData> existingPeers = new ConcurrentDictionary<IPEndPoint, PeerData>();
private long connectionId_unsafe = 0;
/// This is primarily a wrapper around ProcessIncomingMessage
/// to ensure `reader.Recycle()` is always called
/// </summary>
- protected override void ProcessIncomingMessageFromOtherThread(MessageReader reader, EndPoint peerAddress, ConnectionId connectionId)
+ protected override void ProcessIncomingMessageFromOtherThread(MessageReader reader, IPEndPoint peerAddress, ConnectionId connectionId)
{
ByteSpan message = new ByteSpan(reader.Buffer, reader.Offset + reader.Position, reader.BytesRemaining);
this.ProcessIncomingMessage(message, peerAddress);
/// <summary>
/// Handle an incoming datagram from the network
/// </summary>
- private void ProcessIncomingMessage(ByteSpan message, EndPoint peerAddress)
+ private void ProcessIncomingMessage(ByteSpan message, IPEndPoint peerAddress)
{
PeerData peer = null;
if (!this.existingPeers.TryGetValue(peerAddress, out peer))
/// True if further processing of the underlying datagram
/// should be continues. Otherwise, false.
/// </returns>
- private bool ProcessHandshake(PeerData peer, EndPoint peerAddress, ref Record record, ByteSpan message)
+ private bool ProcessHandshake(PeerData peer, IPEndPoint peerAddress, ref Record record, ByteSpan message)
{
// Each record may have multiple handshake payloads
while (message.Length > 0)
/// <param name="record">Parent record</param>
/// <param name="handshake">Parent Handshake header</param>
/// <param name="payload">Handshake payload</param>
- private bool HandleClientHello(PeerData peer, EndPoint peerAddress, ref Record record, ref Handshake handshake, ByteSpan originalMessage, ByteSpan payload)
+ private bool HandleClientHello(PeerData peer, IPEndPoint peerAddress, ref Record record, ref Handshake handshake, ByteSpan originalMessage, ByteSpan payload)
{
// Verify message sequence
if (handshake.MessageSequence != 0)
/// </summary>
/// <param name="message">Incoming datagram</param>
/// <param name="peerAddress">Originating address</param>
- private void HandleNonPeerRecord(ByteSpan message, EndPoint peerAddress)
+ private void HandleNonPeerRecord(ByteSpan message, IPEndPoint peerAddress)
{
Record record;
if (!Record.Parse(out record, message))
}
//Send a HelloVerifyRequest handshake message to a peer
- private void SendHelloVerifyRequest(EndPoint peerAddress, ulong recordSequence, ushort epoch, IRecordProtection recordProtection)
+ private void SendHelloVerifyRequest(IPEndPoint peerAddress, ulong recordSequence, ushort epoch, IRecordProtection recordProtection)
{
Handshake handshake = new Handshake();
handshake.MessageType = HandshakeType.HelloVerifyRequest;
/// <summary>
/// Handle a requrest to send a datagram to the network
/// </summary>
- protected override void QueueRawData(ByteSpan span, EndPoint remoteEndPoint)
+ protected override void QueueRawData(ByteSpan span, IPEndPoint remoteEndPoint)
{
PeerData peer;
if (!this.existingPeers.TryGetValue(remoteEndPoint, out peer))
private struct SendMessageInfo
{
public ByteSpan Span;
- public EndPoint Recipient;
+ public IPEndPoint Recipient;
}
private struct ReceiveMessageInfo
{
public MessageReader Message;
- public EndPoint Sender;
+ public IPEndPoint Sender;
public ConnectionId ConnectionId;
}
}
ConnectionId connectionId = ConnectionId.CreateFromEndPoint((IPEndPoint)remoteEP);
- this.ProcessIncomingMessageFromOtherThread(message, remoteEP, connectionId);
+ this.ProcessIncomingMessageFromOtherThread(message, (IPEndPoint)remoteEP, connectionId);
}
}
}
}
}
}
- protected virtual void ProcessIncomingMessageFromOtherThread(MessageReader message, EndPoint remoteEndPoint, ConnectionId connectionId)
+ protected virtual void ProcessIncomingMessageFromOtherThread(MessageReader message, IPEndPoint remoteEndPoint, ConnectionId connectionId)
{
this.receiveQueue.Add(new ReceiveMessageInfo() { Message = message, Sender = remoteEndPoint, ConnectionId = connectionId });
}
}
}
- void ReadCallback(MessageReader message, EndPoint remoteEndPoint, ConnectionId connectionId)
+ void ReadCallback(MessageReader message, IPEndPoint remoteEndPoint, ConnectionId connectionId)
{
int bytesReceived = message.Length;
bool aware = true;
}
}
- internal void SendDataRaw(byte[] response, EndPoint remoteEndPoint)
+ internal void SendDataRaw(byte[] response, IPEndPoint remoteEndPoint)
{
QueueRawData(response, remoteEndPoint);
}
- protected virtual void QueueRawData(ByteSpan span, EndPoint remoteEndPoint)
+ protected virtual void QueueRawData(ByteSpan span, IPEndPoint remoteEndPoint)
{
this.sendQueue.TryAdd(new SendMessageInfo() { Span = span, Recipient = remoteEndPoint });
}