Author: norman
Date: Thu May 5 19:38:54 2011
New Revision: 1099936
URL: http://svn.apache.org/viewvc?rev=1099936&view=rev
Log:
Make sure we don't send anything except 7bit over the wire when handle the
message content via pop3. See hopefully fix JAMES-1222
Added:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/ReadByteFilterInputStream.java
- copied, changed from r1097906,
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ReadByteFilterInputStream.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/Ascii7BitInputStream.java
Removed:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ReadByteFilterInputStream.java
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ExtraDotInputStream.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
Copied:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/ReadByteFilterInputStream.java
(from r1097906,
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ReadByteFilterInputStream.java)
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/ReadByteFilterInputStream.java?p2=james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/ReadByteFilterInputStream.java&p1=james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ReadByteFilterInputStream.java&r1=1097906&r2=1099936&rev=1099936&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ReadByteFilterInputStream.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/ReadByteFilterInputStream.java
Thu May 5 19:38:54 2011
@@ -17,12 +17,17 @@
* under the License. *
****************************************************************/
-package org.apache.james.pop3server.core;
+package org.apache.james.pop3server;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
+/**
+ * {@link FilterInputStream} which delagates every {@link #read(byte[])} and
{@link #read(byte[], int, int)} to the {@link #read()} method
+ *
+ *
+ */
public class ReadByteFilterInputStream extends FilterInputStream {
protected ReadByteFilterInputStream(InputStream in) {
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ExtraDotInputStream.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ExtraDotInputStream.java?rev=1099936&r1=1099935&r2=1099936&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ExtraDotInputStream.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/ExtraDotInputStream.java
Thu May 5 19:38:54 2011
@@ -22,6 +22,8 @@ package org.apache.james.pop3server.core
import java.io.IOException;
import java.io.InputStream;
+import org.apache.james.pop3server.ReadByteFilterInputStream;
+
/**
* Adds extra dot if dot occurs in message body at beginning of line (according
* to RFC1939)
Added:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/Ascii7BitInputStream.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/Ascii7BitInputStream.java?rev=1099936&view=auto
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/Ascii7BitInputStream.java
(added)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/Ascii7BitInputStream.java
Thu May 5 19:38:54 2011
@@ -0,0 +1,60 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.pop3server.netty;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.james.pop3server.ReadByteFilterInputStream;
+
+/**
+ *
+ * {@link FilterInputStream} which replace every char which is not a 7-bit
ASCII char
+ * in the stream. Thats makes sure we don't try to send a char over the wire
which is not supported
+ * by the POP3 rfc.
+ *
+ *
+ */
+public class Ascii7BitInputStream extends ReadByteFilterInputStream{
+
+ private final char replacementChar;
+ public final static char DEFAULT_REPLACEMENT_CHAR = '?';
+
+ public Ascii7BitInputStream(InputStream in, char replacementChar) {
+ super(in);
+ this.replacementChar = replacementChar;
+ }
+
+ public Ascii7BitInputStream(InputStream in) {
+ this(in, DEFAULT_REPLACEMENT_CHAR);
+ }
+
+ @Override
+ public int read() throws IOException {
+ int i = in.read();
+ // check if we need to replace it with the replacement char
+ if (i > 127) {
+ return replacementChar;
+ } else {
+ return i;
+ }
+ }
+
+}
Modified:
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java?rev=1099936&r1=1099935&r2=1099936&view=diff
==============================================================================
---
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
(original)
+++
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/netty/POP3NettySession.java
Thu May 5 19:38:54 2011
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.james.pop3server.netty;
+import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
@@ -118,4 +119,9 @@ public class POP3NettySession extends Ab
this.mailbox = mailbox;
}
+ @Override
+ public void writeStream(InputStream stream) {
+ super.writeStream(new Ascii7BitInputStream(stream));
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]