Fix due to the modified WebSocket.cs

This commit is contained in:
sta
2012-09-13 23:44:35 +09:00
parent 9730e2a9ff
commit 2fde8824ec
25 changed files with 71 additions and 43 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -53,8 +53,8 @@ namespace WebSocketSharp {
#region Properties #region Properties
public NameValueCollection Headers { get; protected set; } public NameValueCollection Headers { get; internal set; }
public Version ProtocolVersion { get; protected set; } public Version ProtocolVersion { get; internal set; }
#endregion #endregion
+2 -2
View File
@@ -59,7 +59,7 @@ namespace WebSocketSharp {
#region Properties #region Properties
public string HttpMethod { get; private set; } public string HttpMethod { get; internal set; }
public bool IsWebSocketRequest { public bool IsWebSocketRequest {
@@ -89,7 +89,7 @@ namespace WebSocketSharp {
} }
} }
public Uri RequestUri { get; private set; } public Uri RequestUri { get; internal set; }
#endregion #endregion
+2 -2
View File
@@ -72,8 +72,8 @@ namespace WebSocketSharp {
} }
} }
public string Reason { get; private set; } public string Reason { get; internal set; }
public string StatusCode { get; private set; } public string StatusCode { get; internal set; }
#endregion #endregion
+65 -37
View File
@@ -32,6 +32,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration; using System.Configuration;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
@@ -255,21 +256,17 @@ namespace WebSocketSharp
private void acceptHandshake() private void acceptHandshake()
{ {
var request = receiveOpeningHandshake(); var req = receiveOpeningHandshake();
#if DEBUG
Console.WriteLine("WS: Info@acceptHandshake: Opening handshake from client:\n");
Console.WriteLine(request.ToString());
#endif
string msg;
if (!isValidRequest(request, out msg))
throw new InvalidOperationException(msg);
var response = createResponseHandshake(); string msg;
#if DEBUG if (!isValidRequest(req, out msg))
Console.WriteLine("WS: Info@acceptHandshake: Opening handshake from server:\n"); {
Console.WriteLine(response.ToString()); error(msg);
#endif close(CloseStatusCode.HANDSHAKE_FAILURE, msg);
sendResponseHandshake(response); return;
}
sendResponseHandshake();
ReadyState = WsState.OPEN; ReadyState = WsState.OPEN;
} }
@@ -283,12 +280,12 @@ namespace WebSocketSharp
{ {
if (_readyState == WsState.CLOSING || if (_readyState == WsState.CLOSING ||
_readyState == WsState.CLOSED) _readyState == WsState.CLOSED)
{
return; return;
}
else if (_readyState == WsState.CONNECTING) if (_readyState == WsState.CONNECTING && !_isClient)
{ {
OnClose.Emit(this, new CloseEventArgs(data)); OnClose.Emit(this, new CloseEventArgs(data));
sendResponseHandshakeForInvalid();
ReadyState = WsState.CLOSED; ReadyState = WsState.CLOSED;
return; return;
} }
@@ -509,19 +506,15 @@ namespace WebSocketSharp
private void doHandshake() private void doHandshake()
{ {
var request = createOpeningHandshake(); var res = sendOpeningHandshake();
#if DEBUG
Console.WriteLine("WS: Info@doHandshake: Opening handshake from client:\n");
Console.WriteLine(request.ToString());
#endif
var response = sendOpeningHandshake(request);
#if DEBUG
Console.WriteLine("WS: Info@doHandshake: Opening handshake from server:\n");
Console.WriteLine(response.ToString());
#endif
string msg; string msg;
if (!isValidResponse(response, out msg)) if (!isValidResponse(res, out msg))
throw new InvalidOperationException(msg); {
error(msg);
close(CloseStatusCode.HANDSHAKE_FAILURE, msg);
return;
}
ReadyState = WsState.OPEN; ReadyState = WsState.OPEN;
} }
@@ -860,10 +853,17 @@ namespace WebSocketSharp
private RequestHandshake receiveOpeningHandshake() private RequestHandshake receiveOpeningHandshake()
{ {
if (_context != null) RequestHandshake req;
return RequestHandshake.Parse(_context);
return RequestHandshake.Parse(readHandshake()); if (_context == null)
req = RequestHandshake.Parse(readHandshake());
else
req = RequestHandshake.Parse(_context);
#if DEBUG
Console.WriteLine("WS: Info@receiveOpeningHandshake: Opening handshake from client:\n");
Console.WriteLine(req.ToString());
#endif
return req;
} }
private bool send(WsFrame frame) private bool send(WsFrame frame)
@@ -999,15 +999,43 @@ namespace WebSocketSharp
return readLen; return readLen;
} }
private ResponseHandshake sendOpeningHandshake(RequestHandshake request) private ResponseHandshake sendOpeningHandshake()
{ {
_wsStream.Write(request.ToBytes(), 0, request.ToBytes().Length); var req = createOpeningHandshake();
return ResponseHandshake.Parse(readHandshake()); #if DEBUG
Console.WriteLine("WS: Info@sendOpeningHandshake: Opening handshake from client:\n");
Console.WriteLine(req.ToString());
#endif
_wsStream.Write(req.ToBytes(), 0, req.ToBytes().Length);
var res = ResponseHandshake.Parse(readHandshake());
#if DEBUG
Console.WriteLine("WS: Info@sendOpeningHandshake: Response handshake from server:\n");
Console.WriteLine(res.ToString());
#endif
return res;
} }
private void sendResponseHandshake(ResponseHandshake response) private void sendResponseHandshake()
{ {
_wsStream.Write(response.ToBytes(), 0, response.ToBytes().Length); var res = createResponseHandshake();
#if DEBUG
Console.WriteLine("WS: Info@sendResponseHandshake: Response handshake from server:\n");
Console.WriteLine(res.ToString());
#endif
_wsStream.Write(res.ToBytes(), 0, res.ToBytes().Length);
}
private void sendResponseHandshakeForInvalid()
{
var code = (int)WebSocketSharp.Net.HttpStatusCode.BadRequest;
var res = new ResponseHandshake {
Headers = new NameValueCollection(),
Reason = "Bad Request",
StatusCode = code.ToString()
};
_wsStream.Write(res.ToBytes(), 0, res.ToBytes().Length);
} }
private void startMessageThread() private void startMessageThread()
Binary file not shown.
Binary file not shown.