01: /****************************************************************
02: * Licensed to the Apache Software Foundation (ASF) under one *
03: * or more contributor license agreements. See the NOTICE file *
04: * distributed with this work for additional information *
05: * regarding copyright ownership. The ASF licenses this file *
06: * to you under the Apache License, Version 2.0 (the *
07: * "License"); you may not use this file except in compliance *
08: * with the License. You may obtain a copy of the License at *
09: * *
10: * http://www.apache.org/licenses/LICENSE-2.0 *
11: * *
12: * Unless required by applicable law or agreed to in writing, *
13: * software distributed under the License is distributed on an *
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15: * KIND, either express or implied. See the License for the *
16: * specific language governing permissions and limitations *
17: * under the License. *
18: ****************************************************************/package org.apache.james.smtpserver;
19:
20: import org.apache.james.util.mail.dsn.DSNStatus;
21:
22: /**
23: * Handles RSET command
24: */
25: public class RsetCmdHandler implements CommandHandler {
26: /**
27: * The name of the command handled by the command handler
28: */
29: private final static String COMMAND_NAME = "RSET";
30:
31: /*
32: * handles RSET command
33: *
34: * @see org.apache.james.smtpserver.CommandHandler#onCommand(SMTPSession)
35: **/
36: public void onCommand(SMTPSession session) {
37: doRSET(session, session.getCommandArgument());
38: }
39:
40: /**
41: * Handler method called upon receipt of a RSET command.
42: * Resets message-specific, but not authenticated user, state.
43: *
44: * @param session SMTP session object
45: * @param argument the argument passed in with the command by the SMTP client
46: */
47: private void doRSET(SMTPSession session, String argument) {
48: String responseString = "";
49: if ((argument == null) || (argument.length() == 0)) {
50: // remember the ehlo mode
51: Object currentHeloMode = session.getState().get(
52: SMTPSession.CURRENT_HELO_MODE);
53: session.resetState();
54: // start again with the old helo mode
55: if (currentHeloMode != null) {
56: session.getState().put(SMTPSession.CURRENT_HELO_MODE,
57: currentHeloMode);
58: }
59: responseString = "250 "
60: + DSNStatus.getStatus(DSNStatus.SUCCESS,
61: DSNStatus.UNDEFINED_STATUS) + " OK";
62: } else {
63: responseString = "500 "
64: + DSNStatus.getStatus(DSNStatus.PERMANENT,
65: DSNStatus.DELIVERY_INVALID_ARG)
66: + " Unexpected argument provided with RSET command";
67: }
68: session.writeResponse(responseString);
69: }
70:
71: }
|