Fix due to the modified WsStream.cs

This commit is contained in:
sta 2013-06-18 11:10:34 +09:00
parent efabc511b3
commit 5a5874b90f
2 changed files with 27 additions and 39 deletions

View File

@ -1156,7 +1156,7 @@ namespace WebSocketSharp {
Console.WriteLine("WS: Info@send: Request handshake to server:\n"); Console.WriteLine("WS: Info@send: Request handshake to server:\n");
Console.WriteLine(request.ToString()); Console.WriteLine(request.ToString());
#endif #endif
_wsStream.Write(request); _wsStream.WriteHandshake(request);
} }
// As server // As server
@ -1166,7 +1166,7 @@ namespace WebSocketSharp {
Console.WriteLine("WS: Info@send: Response handshake to client:\n"); Console.WriteLine("WS: Info@send: Response handshake to client:\n");
Console.WriteLine(response.ToString()); Console.WriteLine(response.ToString());
#endif #endif
_wsStream.Write(response); _wsStream.WriteHandshake(response);
} }
private bool send(WsFrame frame) private bool send(WsFrame frame)
@ -1187,7 +1187,7 @@ namespace WebSocketSharp {
return false; return false;
} }
return _wsStream.Write(frame); return _wsStream.WriteFrame(frame);
} }
} }

View File

@ -30,10 +30,10 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration; using System.Configuration;
using System.IO; using System.IO;
using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.X509Certificates;
using System.Text; using System.Text;
using WebSocketSharp.Net;
using WebSocketSharp.Net.Security; using WebSocketSharp.Net.Security;
namespace WebSocketSharp { namespace WebSocketSharp {
@ -48,43 +48,35 @@ namespace WebSocketSharp {
#region Private Fields #region Private Fields
private Stream _innerStream;
private bool _isSecure;
private Object _forRead; private Object _forRead;
private Object _forWrite; private Object _forWrite;
private Stream _innerStream;
private bool _secure;
#endregion #endregion
#region Private Constructors #region Private Constructors
private WsStream() private WsStream(Stream innerStream, bool secure)
{ {
_innerStream = innerStream;
_secure = secure;
_forRead = new object(); _forRead = new object();
_forWrite = new object(); _forWrite = new object();
} }
#endregion #endregion
#region Public Constructors #region Internal Constructors
public WsStream(NetworkStream innerStream) internal WsStream(NetworkStream innerStream)
: this() : this(innerStream, false)
{ {
if (innerStream == null)
throw new ArgumentNullException("innerStream");
_innerStream = innerStream;
_isSecure = false;
} }
public WsStream(SslStream innerStream) internal WsStream(SslStream innerStream)
: this() : this(innerStream, true)
{ {
if (innerStream == null)
throw new ArgumentNullException("innerStream");
_innerStream = innerStream;
_isSecure = true;
} }
#endregion #endregion
@ -93,7 +85,7 @@ namespace WebSocketSharp {
public bool DataAvailable { public bool DataAvailable {
get { get {
return _isSecure return _secure
? ((SslStream)_innerStream).DataAvailable ? ((SslStream)_innerStream).DataAvailable
: ((NetworkStream)_innerStream).DataAvailable; : ((NetworkStream)_innerStream).DataAvailable;
} }
@ -101,7 +93,7 @@ namespace WebSocketSharp {
public bool IsSecure { public bool IsSecure {
get { get {
return _isSecure; return _secure;
} }
} }
@ -127,18 +119,18 @@ namespace WebSocketSharp {
#region Internal Methods #region Internal Methods
internal static WsStream CreateClientStream(TcpClient client, string host, bool secure) internal static WsStream CreateClientStream(TcpClient tcpClient, string host, bool secure)
{ {
var netStream = client.GetStream(); var netStream = tcpClient.GetStream();
if (secure) if (secure)
{ {
System.Net.Security.RemoteCertificateValidationCallback validationCb = (sender, certificate, chain, sslPolicyErrors) => System.Net.Security.RemoteCertificateValidationCallback callback = (sender, certificate, chain, sslPolicyErrors) =>
{ {
// FIXME: Always returns true // FIXME: Always returns true
return true; return true;
}; };
var sslStream = new SslStream(netStream, false, validationCb); var sslStream = new SslStream(netStream, false, callback);
sslStream.AuthenticateAsClient(host); sslStream.AuthenticateAsClient(host);
return new WsStream(sslStream); return new WsStream(sslStream);
@ -147,9 +139,9 @@ namespace WebSocketSharp {
return new WsStream(netStream); return new WsStream(netStream);
} }
internal static WsStream CreateServerStream(TcpClient client, bool secure) internal static WsStream CreateServerStream(TcpClient tcpClient, bool secure)
{ {
var netStream = client.GetStream(); var netStream = tcpClient.GetStream();
if (secure) if (secure)
{ {
var sslStream = new SslStream(netStream, false); var sslStream = new SslStream(netStream, false);
@ -162,14 +154,10 @@ namespace WebSocketSharp {
return new WsStream(netStream); return new WsStream(netStream);
} }
internal static WsStream CreateServerStream(WebSocketSharp.Net.HttpListenerContext context) internal static WsStream CreateServerStream(HttpListenerContext context)
{ {
var conn = context.Connection; var conn = context.Connection;
var stream = conn.Stream; return new WsStream(conn.Stream, conn.IsSecure);
return conn.IsSecure
? new WsStream((SslStream)stream)
: new WsStream((NetworkStream)stream);
} }
#endregion #endregion
@ -230,16 +218,16 @@ namespace WebSocketSharp {
.Replace("\r\n", "\n") .Replace("\r\n", "\n")
.Replace("\n ", " ") .Replace("\n ", " ")
.Replace("\n\t", " ") .Replace("\n\t", " ")
.Replace("\n\n", "") .TrimEnd('\n')
.Split('\n'); .Split('\n');
} }
public bool Write(WsFrame frame) public bool WriteFrame(WsFrame frame)
{ {
return write(frame.ToByteArray()); return write(frame.ToByteArray());
} }
public bool Write(Handshake handshake) public bool WriteHandshake(Handshake handshake)
{ {
return write(handshake.ToByteArray()); return write(handshake.ToByteArray());
} }