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