Fix for issue #30

This commit is contained in:
sta 2014-02-14 20:46:55 +09:00
parent a96a6f2226
commit 8448f0a30b

View File

@ -1509,10 +1509,13 @@ namespace WebSocketSharp
} }
// As server, used to broadcast // As server, used to broadcast
internal void Send ( internal void Send (Opcode opcode, byte [] data, Dictionary<CompressionMethod, byte []> cache)
Opcode opcode, byte [] data, Dictionary<CompressionMethod, byte []> cache)
{ {
lock (_forSend) { lock (_forSend) {
lock (_forConn) {
if (_readyState != WebSocketState.OPEN)
return;
try { try {
byte [] cached; byte [] cached;
if (!cache.TryGetValue (_compression, out cached)) { if (!cache.TryGetValue (_compression, out cached)) {
@ -1521,12 +1524,13 @@ namespace WebSocketSharp
opcode, opcode,
Mask.UNMASK, Mask.UNMASK,
data.Compress (_compression), data.Compress (_compression),
_compression != CompressionMethod.NONE).ToByteArray (); _compression != CompressionMethod.NONE)
.ToByteArray ();
cache.Add (_compression, cached); cache.Add (_compression, cached);
} }
send (cached); _stream.Write (cached);
} }
catch (Exception ex) { catch (Exception ex) {
_logger.Fatal (ex.ToString ()); _logger.Fatal (ex.ToString ());
@ -1534,12 +1538,16 @@ namespace WebSocketSharp
} }
} }
} }
}
// As server, used to broadcast // As server, used to broadcast
internal void Send ( internal void Send (Opcode opcode, Stream stream, Dictionary <CompressionMethod, Stream> cache)
Opcode opcode, Stream stream, Dictionary <CompressionMethod, Stream> cache)
{ {
lock (_forSend) { lock (_forSend) {
lock (_forConn) {
if (_readyState != WebSocketState.OPEN)
return;
try { try {
Stream cached; Stream cached;
if (!cache.TryGetValue (_compression, out cached)) { if (!cache.TryGetValue (_compression, out cached)) {
@ -1549,8 +1557,7 @@ namespace WebSocketSharp
else else
cached.Position = 0; cached.Position = 0;
sendFragmented ( sendFragmented (opcode, cached, Mask.UNMASK, _compression != CompressionMethod.NONE);
opcode, cached, Mask.UNMASK, _compression != CompressionMethod.NONE);
} }
catch (Exception ex) { catch (Exception ex) {
_logger.Fatal (ex.ToString ()); _logger.Fatal (ex.ToString ());
@ -1558,6 +1565,7 @@ namespace WebSocketSharp
} }
} }
} }
}
#endregion #endregion