Fix for issue #30

This commit is contained in:
sta 2014-02-15 04:54:36 +09:00
parent 8448f0a30b
commit 488c25642c

View File

@ -1544,25 +1544,21 @@ namespace WebSocketSharp
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 (_forSend) {
lock (_forConn) { try {
if (_readyState != WebSocketState.OPEN) Stream cached;
return; if (!cache.TryGetValue (_compression, out cached)) {
cached = stream.Compress (_compression);
try { cache.Add (_compression, cached);
Stream cached; }
if (!cache.TryGetValue (_compression, out cached)) { else
cached = stream.Compress (_compression); cached.Position = 0;
cache.Add (_compression, cached);
}
else
cached.Position = 0;
if (_readyState == WebSocketState.OPEN)
sendFragmented (opcode, cached, Mask.UNMASK, _compression != CompressionMethod.NONE); sendFragmented (opcode, cached, Mask.UNMASK, _compression != CompressionMethod.NONE);
} }
catch (Exception ex) { catch (Exception ex) {
_logger.Fatal (ex.ToString ()); _logger.Fatal (ex.ToString ());
error ("An exception has occurred while sending a data."); error ("An exception has occurred while sending a data.");
}
} }
} }
} }