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]