Exemplo n.º 1
0
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
#if !NETCF || BCC || SSL
            ServerSslConfiguration sslConfig,
#endif
            Logger log)
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _log       = log;

            Stream netStream = tcpClient.GetStream();

#if BUFFERED
            netStream = new BufferedNetworkStream((NetworkStream)netStream);
#endif
#if !NETCF || BCC || SSL
            if (secure)
            {
                var sslStream = new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation);

                _stream = sslStream;
            }
            else
#endif
            {
                _stream = netStream;
            }

#if SSHARP
            var sock = tcpClient;
#else
            var sock = tcpClient.Client;
#endif
            _serverEndPoint = sock.LocalEndPoint;
            _userEndPoint   = sock.RemoteEndPoint;

            _request = HttpRequest.Read(_stream, 90000);

            _websocket = new WebSocket(this, protocol);
        }
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
#if !NETCF || BCC || SSL
            ServerSslConfiguration sslConfig,
#endif
            Logger logger)
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _logger    = logger;

            Stream netStream = tcpClient.GetStream();

#if BUFFERED
            netStream = new BufferedNetworkStream((NetworkStream)netStream);
#endif
#if !NETCF || BCC || SSL
            if (secure)
            {
                var sslStream = new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation);

                _stream = sslStream;
            }
            else
#endif
            {
                _stream = netStream;
            }

            _request = HttpRequest.Read(_stream, 90000);
            _uri     = HttpUtility.CreateRequestUrl(_request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure);

            _websocket = new WebSocket(this, protocol);
        }