X-Git-Url: http://git.megabrutal.com/?p=mgsmtp.git;a=blobdiff_plain;f=Listener.pas;h=fd607c95772ebd22eb51315e63521c47c98cd703;hp=fc92edd86a77c31ac0a808354e03fc3710940c71;hb=88356fe144204e39fe5bc4368e838d13ac2cfd13;hpb=f70bfb8a7f2c72758be721b78a7e9f33321dca21

diff --git a/Listener.pas b/Listener.pas
index fc92edd..fd607c9 100644
--- a/Listener.pas
+++ b/Listener.pas
@@ -42,6 +42,8 @@ type
    protected
       procedure HandleClient(Connection: TTCPConnection); override;
       procedure ReceiveEMailData(TCP: TTCPRFCConnection; Response: TRFCReply; SpoolObject: TSpoolObjectCreator);
+   public
+      function StartListen: boolean;
    end;
 
 
@@ -132,10 +134,18 @@ constructor TMgSMTPListener.Create(const Address: string; Port: word);
 begin
    { Request connection objects with support for RFC-style commands & responses. }
    inherited Create(Address, Port, NET_TCP_RFCSUPPORT);
-   Logger.AddLine('Server', 'Listening on address: ' + Address + ':' + IntToStr(Port));
 end;
 
 
+function TMgSMTPListener.StartListen: boolean;
+begin
+   Result:= inherited StartListen;
+   if Result then
+      Logger.AddLine('Server', 'Listening on address: ' + GetSockAddrStr)
+   else
+      Logger.AddLine('Server', 'Failed to listen on address: ' + GetSockAddrStr);
+end;
+
 procedure TMgSMTPListener.HandleClient(Connection: TTCPConnection);
 { This is the procedure that actually handles the clients. It receives
   an object that manages the established connection in the parameter.
@@ -220,7 +230,9 @@ begin
 
          if (Length(Cmd) = 0) or (not ReadSucceeded) or UnexpectedFail then { Nothing. }
 
-         else if (Cmd = 'GET') or (Cmd = 'HEAD') or (Cmd = 'POST') then begin
+         else if (Cmd = 'GET') or (Cmd = 'HEAD') or (Cmd = 'PUT') or (Cmd = 'POST')
+            or (Cmd = 'DELETE') or (Cmd = 'CONNECT') or (Cmd = 'OPTIONS')
+            or (Cmd = 'PATCH') or (Cmd = 'TRACE') then begin
             SendAndLogResponse(SMTP_R_SERVICE_NA, 'Please learn to speak SMTP for I won''t speak HTTP. Stop abusing my service!');
             UnexpectedFail:= true;
          end