Hmm ok,

I removed it because I had some problems with emails that was send
from cron daemons (system reports). Maybe we should just higher the
limit on data

WDYTH ?

Bye,
Norman

2010/2/19 Stefano Bagnara <[email protected]>:
> 2010/2/18  <[email protected]>:
>> Author: norman
>> Date: Thu Feb 18 18:19:52 2010
>> New Revision: 911507
>>
>> URL: http://svn.apache.org/viewvc?rev=911507&view=rev
>> Log:
>> Make sure to only check for max line length while processing not the DATA 
>> command
>
> Hi Norman, as far as I know the 1000 bytes limit per row in the RFC is
> valid also in the DATA command and also for 8BITMIME. The only
> extension breaking this limit is BINARY, not 8BITMIME.
>
> Here is an excerpt from rfc:
> ----
> Finally, although the
>   content body contains arbitrary lines of octet-aligned material, the
>   length of each line (number of octets between two CR-LF pairs), is
>   still subject to SMTP server line length restrictions (which may
>   allow as few as 1000 octets on a single line).
>
> Read more: http://www.faqs.org/rfcs/rfc1652.html#ixzz0fxKhlkGx
> -----
>
> If we use a line based processor we also have to enforce a line length
> limit everywhere or we'll go OOM on very long lines.
>
> Stefano
>
>> Modified:
>>    
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/CRLFTerminatedLineDecoder.java
>>    
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/JamesProtocolCodecFactory.java
>>    
>> james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
>>
>> Modified: 
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/CRLFTerminatedLineDecoder.java
>> URL: 
>> http://svn.apache.org/viewvc/james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/CRLFTerminatedLineDecoder.java?rev=911507&r1=911506&r2=911507&view=diff
>> ==============================================================================
>> --- 
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/CRLFTerminatedLineDecoder.java
>>  (original)
>> +++ 
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/CRLFTerminatedLineDecoder.java
>>  Thu Feb 18 18:19:52 2010
>> @@ -33,6 +33,8 @@
>>  public class CRLFTerminatedLineDecoder extends CumulativeProtocolDecoder {
>>
>>     private int maxLineLength;
>> +
>> +    private boolean check = true;
>>
>>     public static int DEFAULT_MAX_LINE_LENTH = 2048;
>>
>> @@ -52,7 +54,11 @@
>>     public CRLFTerminatedLineDecoder() {
>>         this(DEFAULT_MAX_LINE_LENTH);
>>     }
>> +
>>
>> +    public synchronized void checkLineLengthLimit(boolean check) {
>> +        this.check = check;
>> +    }
>>
>>     /*
>>      * (non-Javadoc)
>> @@ -69,7 +75,7 @@
>>         // Now find the first CRLF in the buffer.
>>         byte previous = 0;
>>
>> -        if (maxLineLength != -1 && in.remaining() > maxLineLength) {
>> +        if (check && maxLineLength != -1 && in.remaining() > maxLineLength) 
>> {
>>
>>             // clear the buffer before throw exception
>>             in.clear();
>>
>> Modified: 
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/JamesProtocolCodecFactory.java
>> URL: 
>> http://svn.apache.org/viewvc/james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/JamesProtocolCodecFactory.java?rev=911507&r1=911506&r2=911507&view=diff
>> ==============================================================================
>> --- 
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/JamesProtocolCodecFactory.java
>>  (original)
>> +++ 
>> james/server/trunk/mina-socket/src/main/java/org/apache/james/socket/mina/codec/JamesProtocolCodecFactory.java
>>  Thu Feb 18 18:19:52 2010
>> @@ -21,6 +21,7 @@
>>
>>  import java.nio.charset.Charset;
>>
>> +import org.apache.mina.core.session.AttributeKey;
>>  import org.apache.mina.core.session.IoSession;
>>  import org.apache.mina.filter.codec.ProtocolCodecFactory;
>>  import org.apache.mina.filter.codec.ProtocolDecoder;
>> @@ -34,7 +35,9 @@
>>  *
>>  */
>>  public class JamesProtocolCodecFactory  implements ProtocolCodecFactory {
>> -
>> +    public static final AttributeKey DECODER_KEY = new 
>> AttributeKey(CRLFTerminatedLineDecoder.class,"decoder");
>> +    public static final AttributeKey ENCODER_KEY = new 
>> AttributeKey(TextLineEncoder.class,"encoder");
>> +
>>     private final ProtocolEncoder encoder = new 
>> TextLineEncoder(Charset.forName("US-ASCII"), LineDelimiter.CRLF);
>>     private final ProtocolDecoder decoder = new CRLFTerminatedLineDecoder();
>>
>> @@ -43,6 +46,8 @@
>>      * @see 
>> org.apache.mina.filter.codec.ProtocolCodecFactory#getEncoder(org.apache.mina.core.session.IoSession)
>>      */
>>     public ProtocolEncoder getEncoder(IoSession arg0) throws Exception {
>> +        arg0.setAttribute(ENCODER_KEY,encoder);
>> +
>>         return encoder;
>>     }
>>
>> @@ -51,6 +56,7 @@
>>      * @see 
>> org.apache.mina.filter.codec.ProtocolCodecFactory#getDecoder(org.apache.mina.core.session.IoSession)
>>      */
>>     public ProtocolDecoder getDecoder(IoSession arg0) throws Exception {
>> +        arg0.setAttribute(DECODER_KEY,decoder);
>>         return decoder;
>>     }
>>  }
>>
>> Modified: 
>> james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
>> URL: 
>> http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java?rev=911507&r1=911506&r2=911507&view=diff
>> ==============================================================================
>> --- 
>> james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
>>  (original)
>> +++ 
>> james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
>>  Thu Feb 18 18:19:52 2010
>> @@ -33,6 +33,8 @@
>>  import org.apache.james.smtpserver.mina.filter.SMTPResponseFilter;
>>  import org.apache.james.smtpserver.mina.filter.TarpitFilter;
>>  import org.apache.james.socket.mina.AbstractMINASession;
>> +import org.apache.james.socket.mina.codec.CRLFTerminatedLineDecoder;
>> +import org.apache.james.socket.mina.codec.JamesProtocolCodecFactory;
>>  import org.apache.james.socket.mina.filter.FilterLineHandlerAdapter;
>>  import org.apache.mina.core.session.IoSession;
>>
>> @@ -113,6 +115,7 @@
>>             if (currentHeloMode != null) {
>>                 getState().put(CURRENT_HELO_MODE, currentHeloMode);
>>             }
>> +
>>         }
>>
>>         /**
>> @@ -122,6 +125,9 @@
>>             getIoSession().getFilterChain()
>>                     .remove("lineHandler" + lineHandlerCount);
>>             lineHandlerCount--;
>> +            if (lineHandlerCount == 0) {
>> +                
>> ((CRLFTerminatedLineDecoder)getIoSession().getAttribute(JamesProtocolCodecFactory.DECODER_KEY)).checkLineLengthLimit(true);
>> +            }
>>         }
>>
>>         /**
>> @@ -132,6 +138,10 @@
>>             getIoSession().getFilterChain().addAfter(SMTPResponseFilter.NAME,
>>                     "lineHandler" + lineHandlerCount,
>>                     new 
>> FilterLineHandlerAdapter<SMTPSession>(overrideCommandHandler,SMTP_SESSION));
>> +            // disable the line length limit because we are processing the 
>> data
>> +            // not sure if this is the right place todo this
>> +            
>> ((CRLFTerminatedLineDecoder)getIoSession().getAttribute(JamesProtocolCodecFactory.DECODER_KEY)).checkLineLengthLimit(false);
>> +
>>         }
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to