Author: markt
Date: Tue Mar 19 14:26:49 2013
New Revision: 1458308

URL: http://svn.apache.org/r1458308
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54721
RemoteEndpoint blocks indefinitely if sendObject called with BinaryStream of 
TextStream encoders
Patch provided by Nick Williams.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java?rev=1458308&r1=1458307&r2=1458308&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java 
Tue Mar 19 14:26:49 2013
@@ -426,14 +426,18 @@ public abstract class WsRemoteEndpointIm
                 String msg = ((Encoder.Text) encoder).encode(obj);
                 sendStringByCompletion(msg, completion);
             } else if (encoder instanceof Encoder.TextStream) {
-                Writer w = getSendWriter();
-                ((Encoder.TextStream) encoder).encode(obj, w);
+                try (Writer w = getSendWriter()) {
+                    ((Encoder.TextStream) encoder).encode(obj, w);
+                }
+                completion.onResult(new SendResult());
             } else if (encoder instanceof Encoder.Binary) {
                 ByteBuffer msg = ((Encoder.Binary) encoder).encode(obj);
                 sendBytesByCompletion(msg, completion);
             } else if (encoder instanceof Encoder.BinaryStream) {
-                OutputStream os = getSendStream();
-                ((Encoder.BinaryStream) encoder).encode(obj, os);
+                try (OutputStream os = getSendStream()) {
+                    ((Encoder.BinaryStream) encoder).encode(obj, os);
+                }
+                completion.onResult(new SendResult());
             } else {
                 throw new EncodeException(obj, sm.getString(
                         "wsRemoteEndpoint.noEncoder", obj.getClass()));



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to