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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to