Author: norman Date: Fri Aug 26 09:45:15 2011 New Revision: 1162049 URL: http://svn.apache.org/viewvc?rev=1162049&view=rev Log: Zero-file-copy MAY only be used when COMPRESS is not activated. See JAMES-1306
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=1162049&r1=1162048&r2=1162049&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 Fri Aug 26 09:45:15 2011 @@ -28,8 +28,10 @@ import org.apache.james.imap.encode.Imap import org.apache.james.imap.message.response.Literal; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; +import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.DefaultFileRegion; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; +import org.jboss.netty.handler.codec.compression.ZlibEncoder; import org.jboss.netty.handler.ssl.SslHandler; import org.jboss.netty.handler.stream.ChunkedNioFile; import org.jboss.netty.handler.stream.ChunkedStream; @@ -68,10 +70,11 @@ public class ChannelImapResponseWriter i 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 is in place + // Zero-copy is only possible if no SSL/TLS and no COMPRESS is in place // - // See JAMES-1305 - if (zeroCopy && channel.getPipeline().get(SslHandler.class) == null) { + // 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)); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org