SMTP: correct escaping of messages containing lines with single dot.
3 * see AUTHORS for the list of contributors
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 package org.sonews.daemon.command;
21 import java.io.IOException;
22 import org.sonews.daemon.NNTPConnection;
26 * The CAPABILITIES command allows a client to determine the
27 * capabilities of the server at any given time.
29 * This command MAY be issued at any time; the server MUST NOT require
30 * it to be issued in order to make use of any capability. The response
31 * generated by this command MAY change during a session because of
32 * other state information (which, in turn, may be changed by the
33 * effects of other commands or by external events). An NNTP client is
34 * only able to get the current and correct information concerning
35 * available capabilities at any point during a session by issuing a
36 * CAPABILITIES command at that point of that session and processing the
39 * @author Christian Lins
42 public class CapabilitiesCommand implements Command
45 static final String[] CAPABILITIES = new String[] {
46 "VERSION 2", // MUST be the first one; VERSION 2 refers to RFC3977
47 "READER", // Server implements commands for reading
48 "POST", // Server implements POST command
49 "OVER" // Server implements OVER command
53 public String[] getSupportedCommandStrings()
55 return new String[] {"CAPABILITIES"};
59 * First called after one call to processLine().
63 public boolean hasFinished()
69 public String impliedCapability()
75 public boolean isStateful()
81 public void processLine(NNTPConnection conn, final String line, byte[] raw)
84 conn.println("101 Capabilities list:");
85 for (String cap : CAPABILITIES) {