private void EndAuthenticateAsClient(IAsyncResult ar)
{
try
{
object[] stateObj = (object[])ar.AsyncState;
TcpClient tcpClient = (TcpClient)stateObj[0];
IPEndPoint dstEndPoint = (IPEndPoint)stateObj[1];
byte[] buffer = (byte[])stateObj[2];
SIPConnection callerConnection = (SIPConnection)stateObj[3];
SslStream sslStream = (SslStream)callerConnection.SIPStream;
sslStream.EndAuthenticateAsClient(ar);
if (tcpClient != null && tcpClient.Connected)
{
//SIPConnection callerConnection = new SIPConnection(this, sslStream, dstEndPoint, SIPProtocolsEnum.tls, SIPConnectionsEnum.Caller);
m_connectedSockets.Add(callerConnection.RemoteEndPoint.ToString(), callerConnection);
callerConnection.SIPSocketDisconnected += SIPTLSSocketDisconnected;
callerConnection.SIPMessageReceived += SIPTLSMessageReceived;
//byte[] receiveBuffer = new byte[MaxSIPTCPMessageSize];
callerConnection.SIPStream.BeginRead(callerConnection.SocketBuffer, 0, MaxSIPTCPMessageSize, new AsyncCallback(ReceiveCallback), callerConnection);
logger.Debug("Established TLS connection to " + callerConnection.RemoteEndPoint + ".");
callerConnection.SIPStream.BeginWrite(buffer, 0, buffer.Length, EndSend, callerConnection);
}
else
{
logger.Warn("Could not establish TLS connection to " + callerConnection.RemoteEndPoint + ".");
}
}
catch (Exception excp)
{
logger.Error("Exception SIPTLSChannel EndAuthenticateAsClient. " + excp);
}
}