Пример #1
0
        private void OnSslAuthenticated(IAsyncResult ar)
        {
            try {
                _sslStream.EndAuthenticateAsClient(ar);
                _session = new TcpSession(_socket, _sslStream);

                if (OnSessionConnected != null)
                {
                    OnSessionConnected(_session);
                }

                _session.Start();
            } catch (Exception e) {
                try {
                    if (OnConnectionError != null)
                    {
                        OnConnectionError(e);
                    }
                } catch (Exception) {
                    // ignored
                }

                Close();
            }
        }
Пример #2
0
        private void ProcessConnect(IAsyncResult ar)
        {
            try {
                _socket.EndConnect(ar);

                if (_secureConnect)
                {
                    string targetAddress = ((IPEndPoint)_socket.RemoteEndPoint).Address.ToString();

                    if (_certificates != null)
                    {
                        _sslStream = new SslStream(new NetworkStream(_socket, true), false, _certValidationCallback);

                        _sslStream.BeginAuthenticateAsClient(targetAddress,
                                                             _certificates, SslProtocols.Tls, false, OnSslAuthenticated, this);
                    }
                    else
                    {
                        _sslStream = new SslStream(new NetworkStream(_socket, true), false, AcceptServerCertificate);

                        _sslStream.BeginAuthenticateAsClient(targetAddress,
                                                             null, SslProtocols.Tls, false, OnSslAuthenticated, this);
                    }
                }
                else
                {
                    _session = new TcpSession(_socket, new NetworkStream(_socket, true));

                    try {
                        if (OnSessionConnected != null)
                        {
                            OnSessionConnected(_session);
                        }
                    } catch (Exception) {
                        // ignored
                    }

                    _session.Start();
                }
            } catch (Exception e) {
                try {
                    if (OnConnectionError != null)
                    {
                        OnConnectionError(e);
                    }
                } catch (Exception) {
                    // ignored
                }

                Close();
            }
        }
Пример #3
0
        private void OnClientAutenticated(IAsyncResult ar)
        {
            var        sslConnection = (SslConnection)ar.AsyncState;
            TcpSession session       = null;

            try {
                sslConnection.SslStream.EndAuthenticateAsServer(ar);
                session = new TcpSession(sslConnection.Socket, sslConnection.SslStream);

                try {
                    if (OnClientConnected != null)
                    {
                        OnClientConnected(session);
                    }
                } catch (Exception) {
                    // ignored
                }

                session.Start();
            } catch (Exception e) {
                try {
                    if (OnError != null)
                    {
                        OnError(e);
                    }
                } catch (Exception) {
                    // ignored
                }

                if (session != null)
                {
                    session.Close();
                }
                else
                {
                    sslConnection.SslStream.Close();
                    sslConnection.Socket.Close();
                }
            }
        }
Пример #4
0
        private void OnClientAccepted(IAsyncResult ar)
        {
            var           listener      = (TcpListener)ar.AsyncState;
            Socket        socket        = null;
            TcpSession    session       = null;
            SslConnection sslConnection = null;

            try {
                socket = listener.EndAcceptSocket(ar);

                if (SecureServer)
                {
                    sslConnection = new SslConnection
                    {
                        Socket = socket,
                    };

                    sslConnection.SslStream = new SslStream(
                        new NetworkStream(socket, true), false, CertificateValidationCallback);

                    sslConnection.SslStream.BeginAuthenticateAsServer(
                        ServerCertificate, ClientCertificateReqired,
                        SslProtocols.Tls, true, OnClientAutenticated,
                        sslConnection);
                }
                else
                {
                    session = new TcpSession(socket, new NetworkStream(socket, true));

                    try {
                        if (OnClientConnected != null)
                        {
                            OnClientConnected(session);
                        }
                    } catch (Exception e) {
                        Console.WriteLine(e);
                        // ignored
                    }

                    session.Start();
                }
            } catch (Exception e) {
                try {
                    if (OnError != null)
                    {
                        OnError(e);
                    }
                } catch (Exception) {
                    // ignored
                }

                if (session != null)
                {
                    session.Close();
                }
                else if (sslConnection != null)
                {
                    if (sslConnection.SslStream != null)
                    {
                        sslConnection.SslStream.Close();
                    }
                    else
                    {
                        sslConnection.Socket.Close();
                    }
                }
                else if (socket != null)
                {
                    socket.Close();
                }
            }

            listener.BeginAcceptTcpClient(OnClientAccepted, listener);
        }