1 /************************************************************************ 2 * Copyright (c) 1999-2006 The Apache Software Foundation. * 3 * All rights reserved. * 4 * ------------------------------------------------------------------- * 5 * Licensed under the Apache License, Version 2.0 (the "License"); you * 6 * may not use this file except in compliance with the License. You * 7 * may obtain a copy of the License at: * 8 * * 9 * http://www.apache.org/licenses/LICENSE-2.0 * 10 * * 11 * Unless required by applicable law or agreed to in writing, software * 12 * distributed under the License is distributed on an "AS IS" BASIS, * 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * 14 * implied. See the License for the specific language governing * 15 * permissions and limitations under the License. * 16 ***********************************************************************/ 17 18 package org.apache.james.smtpserver; 19 20 import org.apache.james.util.mail.dsn.DSNStatus; 21 22 /*** 23 * Handles QUIT command 24 */ 25 public class QuitCmdHandler implements CommandHandler { 26 27 /*** 28 * The name of the command handled by the command handler 29 */ 30 private final static String COMMAND_NAME = "QUIT"; 31 32 /*** 33 * handles QUIT command 34 * 35 * @see org.apache.james.smtpserver.CommandHandler#onCommand(SMTPSession) 36 */ 37 public void onCommand(SMTPSession session) { 38 doQUIT(session, session.getCommandArgument()); 39 40 } 41 42 43 /*** 44 * Handler method called upon receipt of a QUIT command. 45 * This method informs the client that the connection is 46 * closing. 47 * 48 * @param session SMTP session object 49 * @param argument the argument passed in with the command by the SMTP client 50 */ 51 private void doQUIT(SMTPSession session, String argument) { 52 53 String responseString = ""; 54 if ((argument == null) || (argument.length() == 0)) { 55 session.getResponseBuffer().append("221 "+DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.UNDEFINED_STATUS)+" ") 56 .append(session.getConfigurationData().getHelloName()) 57 .append(" Service closing transmission channel"); 58 responseString = session.clearResponseBuffer(); 59 } else { 60 responseString = "500 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Unexpected argument provided with QUIT command"; 61 } 62 session.writeResponse(responseString); 63 session.endSession(); 64 } 65 66 67 } 68 69 70