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