You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/10/19 14:26:28 UTC

svn commit: r1186159 - /james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java

Author: norman
Date: Wed Oct 19 12:26:28 2011
New Revision: 1186159

URL: http://svn.apache.org/viewvc?rev=1186159&view=rev
Log:
Check if the Channel is connected before write a message to it. See JAMES-1340

Modified:
    james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java

Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java?rev=1186159&r1=1186158&r2=1186159&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java Wed Oct 19 12:26:28 2011
@@ -58,28 +58,34 @@ public class ChannelImapResponseWriter i
      * @see org.apache.james.imap.encode.ImapResponseWriter#write(byte[])
      */
     public void write(byte[] buffer) throws IOException {
-        channel.write(ChannelBuffers.wrappedBuffer(buffer));
+        if (channel.isConnected()) {
+            channel.write(ChannelBuffers.wrappedBuffer(buffer));
+        }
     }
 
     /**
      * @see org.apache.james.imap.encode.ImapResponseWriter#write(org.apache.james.imap.message.response.Literal)
      */
     public void write(Literal literal) throws IOException {
-        InputStream in = literal.getInputStream();
-        if (in instanceof FileInputStream && channel.getFactory() instanceof NioServerSocketChannelFactory) {
-            FileChannel fc = ((FileInputStream) in).getChannel();
-            // Zero-copy is only possible if no SSL/TLS  and no COMPRESS is in place
-            //
-            // See JAMES-1305 and JAMES-1306
-            ChannelPipeline cp = channel.getPipeline();
-            if (zeroCopy && cp.get(SslHandler.class) == null && cp.get(ZlibEncoder.class) == null ) {
-                channel.write(new DefaultFileRegion(fc, fc.position(), literal.size()));
+        if (channel.isConnected()) {
+            InputStream in = literal.getInputStream();
+            if (in instanceof FileInputStream && channel.getFactory() instanceof NioServerSocketChannelFactory) {
+                FileChannel fc = ((FileInputStream) in).getChannel();
+                   // Zero-copy is only possible if no SSL/TLS  and no COMPRESS is in place
+                //
+                // See JAMES-1305 and JAMES-1306
+                ChannelPipeline cp = channel.getPipeline();
+                if (zeroCopy && cp.get(SslHandler.class) == null && cp.get(ZlibEncoder.class) == null ) {
+                    channel.write(new DefaultFileRegion(fc, fc.position(), literal.size()));
+                } else {
+                    channel.write(new ChunkedNioFile(fc, 8192));
+                }
             } else {
-                channel.write(new ChunkedNioFile(fc, 8192));
+                channel.write(new ChunkedStream(literal.getInputStream()));
             }
-        } else {
-            channel.write(new ChunkedStream(literal.getInputStream()));
         }
     }
+    
+    
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org