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