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