Author: norman
Date: Sat Sep 24 12:02:47 2011
New Revision: 1175162

URL: http://svn.apache.org/viewvc?rev=1175162&view=rev
Log:
LineHandler and ConnectHandler now return Response. See PROTOCOLS-34

Modified:
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java
    
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
    
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
    
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/Response.java
 Sat Sep 24 12:02:47 2011
@@ -19,6 +19,7 @@
 
 package org.apache.james.protocols.api;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -27,6 +28,32 @@ import java.util.List;
  *
  */
 public interface Response {
+    
+    /**
+     * Special {@link Response} implementation which will just disconnect the 
client
+     */
+    public static final Response DISCONNECT = new Response() {
+
+        public String getRetCode() {
+            return "";
+        }
+
+        @SuppressWarnings("unchecked")
+        public List<CharSequence> getLines() {
+            return Collections.EMPTY_LIST;
+        }
+
+        public String getRawLine() {
+            return "";
+        }
+
+        public boolean isEndSession() {
+            return true;
+        }
+        
+    };
+    
+    
     /**
      * Return return-code
      * @return

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java
 Sat Sep 24 12:02:47 2011
@@ -19,7 +19,7 @@
 
 package org.apache.james.protocols.api.handler;
 
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -29,10 +29,7 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.james.protocols.api.BaseRequest;
-import org.apache.james.protocols.api.FutureResponse;
-import org.apache.james.protocols.api.FutureResponse.ResponseListener;
 import org.apache.james.protocols.api.ProtocolSession;
-import org.apache.james.protocols.api.Request;
 import org.apache.james.protocols.api.Response;
 
 
@@ -49,6 +46,9 @@ public abstract class AbstractCommandDis
     private HashMap<String, List<CommandHandler<Session>>> commandHandlerMap = 
new HashMap<String, List<CommandHandler<Session>>>();
 
     private List<CommandHandlerResultHandler<Response, Session>> rHandlers = 
new ArrayList<CommandHandlerResultHandler<Response, Session>>();
+    
+    private final Charset charset = Charset.forName(getLineDecodingCharset());
+    
     /**
      * Add it to map (key as command name, value is an array list of 
CommandHandlers)
      *
@@ -128,76 +128,48 @@ public abstract class AbstractCommandDis
      * (non-Javadoc)
      * @see 
org.apache.james.api.protocol.LineHandler#onLine(org.apache.james.api.protocol.ProtocolSession,
 byte[])
      */
-    public void onLine(final Session session, byte[] line) {
+    public Response onLine(final Session session, byte[] line) {
         String curCommandName = null;
         String curCommandArgument = null;
-        String cmdString;
-
-        try {
-            cmdString = new String(line, getLineDecodingCharset()).trim(); 
-            int spaceIndex = cmdString.indexOf(" ");
-            if (spaceIndex > 0) {
-                curCommandName = cmdString.substring(0, spaceIndex);
-                curCommandArgument = cmdString.substring(spaceIndex + 1);
-            } else {
-                curCommandName = cmdString;
-            }
-            curCommandName = curCommandName.toUpperCase(Locale.US);
-
-            if (session.getLogger().isDebugEnabled()) {
-                session.getLogger().debug(getClass().getName()+" received: " + 
cmdString);
-            }
-            List<CommandHandler<Session>> commandHandlers = 
getCommandHandlers(curCommandName, session);
-            // fetch the command handlers registered to the command
-            
-            BaseRequest request = new BaseRequest(curCommandName, 
curCommandArgument);
-            Iterator<CommandHandler<Session>> handlers = 
commandHandlers.iterator();
-            executeHandlers(handlers, session, request);
-
-        } catch (UnsupportedEncodingException e) {
-            // Should never happen
-           session.getLogger().error("Unable to handle encoding" ,e );
+        String cmdString = new String(line, charset).trim(); 
+        int spaceIndex = cmdString.indexOf(" ");
+        if (spaceIndex > 0) {
+            curCommandName = cmdString.substring(0, spaceIndex);
+            curCommandArgument = cmdString.substring(spaceIndex + 1);
+        } else {
+            curCommandName = cmdString;
         }
-        
-       
-    }
+        curCommandName = curCommandName.toUpperCase(Locale.US);
 
-    private void executeHandlers(final Iterator<CommandHandler<Session>> 
handlers, final Session session, final Request request) {
-        final CommandHandler<Session> cHandler = handlers.next();
-        
-
-        final long start = System.currentTimeMillis();
-        Response response = cHandler.onCommand(session, request);
-        if (response instanceof FutureResponse) {
-            ((FutureResponse) response).addListener(new ResponseListener() {
-                
-                public void onResponse(Response response) {
-                    long executionTime = System.currentTimeMillis() - start;
-                    handleResponse(handlers, session, response, request, 
cHandler, executionTime);
-                }
-            });
-        } else {
-            long executionTime = System.currentTimeMillis() - start;
-            handleResponse(handlers, session, response, request, cHandler, 
executionTime);
+        if (session.getLogger().isDebugEnabled()) {
+            session.getLogger().debug(getClass().getName() + " received: " + 
cmdString);
         }
-    }
-    
-    private void handleResponse(Iterator<CommandHandler<Session>> handlers, 
Session session, Response response, Request request, CommandHandler<Session> 
cHandler, long executionTime) {
+        List<CommandHandler<Session>> commandHandlers = 
getCommandHandlers(curCommandName, session);
+        // fetch the command handlers registered to the command
 
-        // if the response is received, stop processing of command
-        // handlers
-        if (response != null) {
-            
-            // now process the result handlers
-            for (int a = 0; a < rHandlers.size(); a++) {
-                response = rHandlers.get(a).onResponse(session, response, 
executionTime, (CommandHandler<Session>) cHandler);
+        BaseRequest request = new BaseRequest(curCommandName, 
curCommandArgument);
+        Iterator<CommandHandler<Session>> handlers = 
commandHandlers.iterator();
+        while (handlers.hasNext()) {
+            final long start = System.currentTimeMillis();
+            CommandHandler<Session> cHandler = handlers.next();
+            Response response = cHandler.onCommand(session, request);
+            if (response != null) {
+                long executionTime = System.currentTimeMillis() - start;
+
+                // now process the result handlers
+                for (int a = 0; a < rHandlers.size(); a++) {
+                    response = rHandlers.get(a).onResponse(session, response, 
executionTime, (CommandHandler<Session>) cHandler);
+                }
             }
-            session.writeResponse(response);
-        } else {
-            executeHandlers(handlers, session, request);
+            if (response != null) {
+                return response;
+            }
+
         }
-        
+        return null;
+       
     }
+
     protected String getLineDecodingCharset() {
         return "US-ASCII";
     }

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/ConnectHandler.java
 Sat Sep 24 12:02:47 2011
@@ -22,6 +22,7 @@
 package org.apache.james.protocols.api.handler;
 
 import org.apache.james.protocols.api.ProtocolSession;
+import org.apache.james.protocols.api.Response;
 
 /**
  * Custom connect handlers must implement this interface
@@ -33,7 +34,10 @@ public interface ConnectHandler<Session 
     /**
      * Handle connection and disconnect if true is returned
      * 
+     * @param session
+     * @return response or null
+     * 
     **/
-    void onConnect(Session session);
+    Response onConnect(Session session);
 
 }

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/LineHandler.java
 Sat Sep 24 12:02:47 2011
@@ -20,6 +20,7 @@
 package org.apache.james.protocols.api.handler;
 
 import org.apache.james.protocols.api.ProtocolSession;
+import org.apache.james.protocols.api.Response;
 
 /**
  * Implementations of this Interface will get called after a full line 
(terminated with \r\n) was received.
@@ -34,7 +35,8 @@ public interface LineHandler<Session ext
      * 
      * @param session not null
      * @param line not null 
+     * @return response or null
      */
-    void onLine(Session session, byte[] line);
+    Response onLine(Session session, byte[] line);
     
 }

Modified: 
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java
 (original)
+++ 
james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/BasicChannelUpstreamHandler.java
 Sat Sep 24 12:02:47 2011
@@ -95,12 +95,15 @@ public class BasicChannelUpstreamHandler
                 ConnectHandler cHandler = connectHandlers.get(i);
                 
                 long start = System.currentTimeMillis();
-                connectHandlers.get(i).onConnect(session);
+                Response response = connectHandlers.get(i).onConnect(session);
                 long executionTime = System.currentTimeMillis() - start;
                 
                 for (int a = 0; a < resultHandlers.size(); a++) {
                     resultHandlers.get(a).onResponse(session, executionTime, 
cHandler);
                 }
+                if (response != null) {
+                    session.writeResponse(response);
+                }
                
             }
         }
@@ -148,12 +151,15 @@ public class BasicChannelUpstreamHandler
             
             LineHandler lHandler=  (LineHandler) lineHandlers.getLast();
             long start = System.currentTimeMillis();            
-            lHandler.onLine(pSession,line);
+            Response response = lHandler.onLine(pSession,line);
             long executionTime = System.currentTimeMillis() - start;
 
             for (int i = 0; i < resultHandlers.size(); i++) {
                 resultHandlers.get(i).onResponse(pSession, executionTime, 
lHandler);
             }
+            if (response != null) {
+                pSession.writeResponse(response);
+            }
 
         }
         

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
 Sat Sep 24 12:02:47 2011
@@ -49,12 +49,13 @@ public class DataCmdHandler implements C
          * (non-Javadoc)
          * @see 
org.apache.james.api.protocol.LineHandler#onLine(org.apache.james.api.protocol.ProtocolSession,
 byte[])
          */
-        public void onLine(SMTPSession session, byte[] line) {
+        public SMTPResponse onLine(SMTPSession session, byte[] line) {
             
             // Discard everything until the end of DATA session
             if (line.length == 3 && line[0] == 46) {
                 session.popLineHandler();
             }
+            return null;
         }
     }
 
@@ -72,8 +73,8 @@ public class DataCmdHandler implements C
          * (non-Javadoc)
          * @see 
org.apache.james.api.protocol.LineHandler#onLine(org.apache.james.api.protocol.ProtocolSession,
 byte[])
          */
-        public void onLine(SMTPSession session, byte[] line) {
-            filter.onLine(session, line, next);
+        public Response onLine(SMTPSession session, byte[] line) {
+            return filter.onLine(session, line, next);
         }
                 
     }

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineFilter.java
 Sat Sep 24 12:02:47 2011
@@ -21,6 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
+import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.LineHandler;
 import org.apache.james.protocols.api.handler.ProtocolHandler;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -38,5 +39,5 @@ public interface DataLineFilter extends 
      * @param line
      * @param next
      */
-    void onLine(SMTPSession session, byte[] line, LineHandler<SMTPSession> 
next);
+    Response onLine(SMTPSession session, byte[] line, LineHandler<SMTPSession> 
next);
 }
\ No newline at end of file

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
 Sat Sep 24 12:02:47 2011
@@ -59,7 +59,7 @@ public class DataLineMessageHookHandler 
      * (non-Javadoc)
      * @see 
org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession,
 byte[], org.apache.james.api.protocol.LineHandler)
      */
-    public void onLine(final SMTPSession session, byte[] line, 
LineHandler<SMTPSession> next) {
+    public SMTPResponse onLine(final SMTPSession session, byte[] line, 
LineHandler<SMTPSession> next) {
         MailEnvelopeImpl env = (MailEnvelopeImpl) 
session.getState().get(DataCmdHandler.MAILENV);
         OutputStream out = env.getMessageOutputStream();
         try {
@@ -80,8 +80,8 @@ public class DataLineMessageHookHandler 
                 } else {
                     session.resetState();
                 }
-                session.writeResponse(response);
-
+                return response;
+                
             // DotStuffing.
             } else if (line[0] == 46 && line[1] == 46) {
                 out.write(line,1,line.length-1);
@@ -94,15 +94,16 @@ public class DataLineMessageHookHandler 
             }
             out.flush();
         } catch (IOException e) {
-            SMTPResponse response;
-            response = new 
SMTPResponse(SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT,
+            SMTPResponse response = new 
SMTPResponse(SMTPRetCode.LOCAL_ERROR,DSNStatus.getStatus(DSNStatus.TRANSIENT,
                             DSNStatus.UNDEFINED_STATUS) + " Error processing 
message: " + e.getMessage());
             
             session.getLogger().error(
                     "Unknown error occurred while processing DATA.", e);
-            session.writeResponse(response);
+            
             session.resetState();
+            return response;
         } 
+        return null;
     }
 
 

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
 Sat Sep 24 12:02:47 2011
@@ -24,6 +24,7 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.james.protocols.api.handler.LineHandler;
+import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.mailet.base.RFC2822Headers;
 import org.apache.mailet.base.RFC822DateFormat;
@@ -46,12 +47,12 @@ public class ReceivedDataLineFilter impl
      * (non-Javadoc)
      * @see 
org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession,
 byte[], org.apache.james.api.protocol.LineHandler)
      */
-    public void onLine(SMTPSession session,  byte[] line, 
LineHandler<SMTPSession> next) {
+    public SMTPResponse onLine(SMTPSession session,  byte[] line, 
LineHandler<SMTPSession> next) {
         if (session.getState().containsKey(HEADERS_WRITTEN) == false) {
             addNewReceivedMailHeaders(session, next);
             session.getState().put(HEADERS_WRITTEN, true);
         }
-        next.onLine(session, line);
+        return (SMTPResponse) next.onLine(session, line);
     }
 
     private void addNewReceivedMailHeaders(SMTPSession session, 
LineHandler<SMTPSession> next) {

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/WelcomeMessageHandler.java
 Sat Sep 24 12:02:47 2011
@@ -22,6 +22,7 @@ package org.apache.james.protocols.smtp.
 
 import java.util.Date;
 
+import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.ConnectHandler;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -41,7 +42,7 @@ public class WelcomeMessageHandler imple
     /**
      * @see 
org.apache.james.smtpserver.protocol.ConnectHandler#onConnect(SMTPSession)
      */
-    public void onConnect(SMTPSession session) {
+    public Response onConnect(SMTPSession session) {
         String smtpGreeting = session.getSMTPGreeting();
 
         SMTPResponse welcomeResponse;
@@ -59,7 +60,7 @@ public class WelcomeMessageHandler imple
         } else {
             welcomeResponse = new 
SMTPResponse(SMTPRetCode.SERVICE_READY,smtpGreeting);
         }
-        session.writeResponse(welcomeResponse);
+        return welcomeResponse;
     }
     
     protected String getProductName() {

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
 Sat Sep 24 12:02:47 2011
@@ -21,7 +21,7 @@
 
 package org.apache.james.protocols.smtp.core.esmtp;
 
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -58,17 +58,11 @@ import org.apache.james.protocols.smtp.h
 public class AuthCmdHandler
     implements CommandHandler<SMTPSession>, EhloExtension, ExtensibleHandler, 
MailParametersHook {
 
+    private final static Charset CHARSET = Charset.forName("US-ASCII");
     private abstract class AbstractSMTPLineHandler implements 
LineHandler<SMTPSession> {
 
-        public void onLine(SMTPSession session, byte[] l) {
-            SMTPResponse res;
-            try {
-                res = handleCommand(session, new String(l,"US-ASCII"));
-                session.writeResponse(res);
-            } catch (UnsupportedEncodingException e) {
-                e.printStackTrace();
-            }
-
+        public Response onLine(SMTPSession session, byte[] l) {
+            return handleCommand(session, new String(l, CHARSET));
            
         }
 

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
 Sat Sep 24 12:02:47 2011
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.james.protocols.api.handler.LineHandler;
 import org.apache.james.protocols.smtp.MailEnvelope;
+import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.core.DataLineFilter;
@@ -136,7 +137,7 @@ public class MailSizeEsmtpExtension impl
      * (non-Javadoc)
      * @see 
org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession,
 byte[], org.apache.james.api.protocol.LineHandler)
      */
-    public void onLine(SMTPSession session, byte[] line, 
LineHandler<SMTPSession> next) {
+    public SMTPResponse onLine(SMTPSession session, byte[] line, 
LineHandler<SMTPSession> next) {
         Boolean failed = (Boolean) session.getState().get(MESG_FAILED);
         // If we already defined we failed and sent a reply we should simply
         // wait for a CRLF.CRLF to be sent by the client.
@@ -170,6 +171,7 @@ public class MailSizeEsmtpExtension impl
                 session.getState().put("CURRENT_SIZE", newSize);
             }
         }
+        return null;
     }
 
     /**

Modified: 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
 (original)
+++ 
james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
 Sat Sep 24 12:02:47 2011
@@ -36,7 +36,7 @@ import org.apache.mailet.MailAddress;
 /**
   * Connect handler for DNSRBL processing
   */
-public class DNSRBLHandler implements  ConnectHandler<SMTPSession>, RcptHook{
+public class DNSRBLHandler implements  RcptHook{
 
     
     /**
@@ -67,14 +67,6 @@ public class DNSRBLHandler implements  C
    
     
     /**
-     * check if the remote Ip address is block listed
-     *
-    **/
-    public void onConnect(SMTPSession session) {
-        checkDNSRBL(session, session.getRemoteIPAddress());
-    }
-    
-    /**
      * Set the whitelist array
      * 
      * @param whitelist The array which contains the whitelist
@@ -196,7 +188,8 @@ public class DNSRBLHandler implements  C
      * @see 
org.apache.james.protocols.smtp.hook.RcptHook#doRcpt(org.apache.james.protocols.smtp.SMTPSession,
 org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)
      */
     public HookResult doRcpt(SMTPSession session, MailAddress sender, 
MailAddress rcpt) {
-        
+        checkDNSRBL(session, session.getRemoteIPAddress());
+
         if (!session.isRelayingAllowed()) {
             String blocklisted = (String) 
session.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME);
     

Modified: 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java?rev=1175162&r1=1175161&r2=1175162&view=diff
==============================================================================
--- 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
 (original)
+++ 
james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
 Sat Sep 24 12:02:47 2011
@@ -155,7 +155,7 @@ public class DNSRBLHandlerTest extends T
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
-        rbl.onConnect(mockedSMTPSession);
+        rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         assertEquals("Details","Blocked - see 
http://www.spamcop.net/bl.shtml?127.0.0.2";,
                
mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
         
assertNotNull("Blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
@@ -169,7 +169,7 @@ public class DNSRBLHandlerTest extends T
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(false);
-        rbl.onConnect(mockedSMTPSession);
+        rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         assertNull("No 
details",mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
         
assertNotNull("Blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
     }
@@ -184,7 +184,7 @@ public class DNSRBLHandlerTest extends T
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
-        rbl.onConnect(mockedSMTPSession);
+        rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         assertNull("No 
details",mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
         assertNull("Not 
blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
     }
@@ -200,7 +200,7 @@ public class DNSRBLHandlerTest extends T
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
-        rbl.onConnect(mockedSMTPSession);
+        rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         assertNull("No 
details",mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
         assertNull("Not 
blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
     }
@@ -216,7 +216,7 @@ public class DNSRBLHandlerTest extends T
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
-        rbl.onConnect(mockedSMTPSession);
+        rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         
assertNull(mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
         
assertNotNull("Blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
     }
@@ -232,7 +232,7 @@ public class DNSRBLHandlerTest extends T
 
         rbl.setWhitelist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
-        rbl.onConnect(mockedSMTPSession);
+        rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         
assertNull(mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
         assertNull("Not 
blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to