This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit d1f1ca1f1e44b72114390b815053d4477452d7df Author: Benoit Tellier <[email protected]> AuthorDate: Sun Jan 30 22:32:36 2022 +0700 [REFACTORING] SMTPResponse: Remove buggy constructor - Calls could easily be switched to the other cnstructor - It was buggy: null pointer exception, array out of bound exception... Risky stuff! - Also, a custom AuthenticationHook disconnecting the session was throwing (new SMTPResponse("") throws) --- .../apache/james/protocols/smtp/SMTPResponse.java | 39 ---------------------- .../james/protocols/smtp/SMTPStartTlsResponse.java | 4 --- .../protocols/smtp/core/esmtp/AuthCmdHandler.java | 4 +-- .../smtp/core/esmtp/StartTlsCmdHandler.java | 4 +-- 4 files changed, 3 insertions(+), 48 deletions(-) diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java index 9c8eeec..7db6efe 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java @@ -22,18 +22,12 @@ package org.apache.james.protocols.smtp; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang3.StringUtils; import org.apache.james.protocols.api.AbstractResponse; /** * Contains an SMTP result */ public class SMTPResponse extends AbstractResponse { - - protected SMTPResponse() { - - } - /** * Construct a new SMTPResponse. The given code and description can not be null, if null an IllegalArgumentException * get thrown @@ -45,37 +39,6 @@ public class SMTPResponse extends AbstractResponse { super(code, description); } - /** - * Construct a new SMTPResponse. The given rawLine need to be in format [SMTPResponseReturnCode SMTResponseDescription]. - * If this is not the case an IllegalArgumentException get thrown. - * - * @param rawLine the raw SMTPResponse - */ - public SMTPResponse(String rawLine) { - this(extractCode(rawLine), extractResponse(rawLine)); - } - - - private static String extractCode(String raw) { - String[] args = StringUtils.split(raw, " "); - if (args != null && args.length > 1) { - return args[0]; - - } else { - throw new IllegalArgumentException("Invalid Response format. Format should be [Code Description]"); - } - } - - private static String extractResponse(String raw) { - String[] args = StringUtils.split(raw, " "); - if (args != null && args.length > 1) { - return args[2]; - - } else { - return null; - } - } - @Override public List<CharSequence> getLines() { List<CharSequence> responseList = new ArrayList<>(); @@ -97,6 +60,4 @@ public class SMTPResponse extends AbstractResponse { return responseList; } - - } diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPStartTlsResponse.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPStartTlsResponse.java index e42e787..f49bfba 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPStartTlsResponse.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPStartTlsResponse.java @@ -34,10 +34,6 @@ public class SMTPStartTlsResponse extends SMTPResponse implements StartTlsRespon super(code, description); } - public SMTPStartTlsResponse(String rawLine) { - super(rawLine); - } - /** * Returns an immutable {@link StartTlsResponse} */ diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java index 210c6a8..8173722 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java @@ -448,9 +448,7 @@ public class AuthCmdHandler } return response; } else if (returnCode.isDisconnected()) { - SMTPResponse response = new SMTPResponse(""); - response.setEndSession(true); - return response; + return Response.DISCONNECT; } } return null; diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java index 539eda5..8a880b1 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java @@ -48,8 +48,8 @@ public class StartTlsCmdHandler implements CommandHandler<SMTPSession>, EhloExte private static final Response TLS_ALREADY_ACTIVE = new SMTPResponse("500", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " TLS already active RFC2487 5.2").immutable(); private static final Response READY_FOR_STARTTLS = new SMTPStartTlsResponse("220", DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " Ready to start TLS").immutable(); - private static final Response SYNTAX_ERROR = new SMTPResponse("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command").immutable(); - private static final Response ALREADY_AUTH_ERROR = new SMTPResponse("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (invalid command in this state) Already authenticated...").immutable(); + private static final Response SYNTAX_ERROR = new SMTPResponse("501", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command").immutable(); + private static final Response ALREADY_AUTH_ERROR = new SMTPResponse("501", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (invalid command in this state) Already authenticated...").immutable(); private static final Response NOT_SUPPORTED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " Command " + COMMAND_NAME + " unrecognized.").immutable(); @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
