Avoid memory leaks when using TRelayer
[mgsmtp.git] / Spool.pas
index 1e4510192f8dd04f97fbf947dd26e0835523d652..118e367479c19105881dbce9938633734a4f97a4 100644 (file)
--- a/Spool.pas
+++ b/Spool.pas
@@ -1,6 +1,6 @@
 {
    MegaBrutal's SMTP Server (MgSMTP)
-   Copyright (C) 2010-2015 MegaBrutal
+   Copyright (C) 2010-2018 MegaBrutal
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
@@ -873,13 +873,13 @@ begin
 
                         AssignDeliveryStatusToSMTPCodes(CurrEnv, Relayer.IsTransactionComplete);
                         Relayer.CloseConnection;
-                        Relayer.Free;
                         HandleDeliveryResults(SpoolObject, false, CurrEnv, FailEnv, 0, '');
                      end
                      else begin
                         HandleDeliveryResults(SpoolObject, false, CurrEnv, FailEnv, DS_DELAYED or DS_CONNECTIONFAIL, DSMSG_CONNECTIONFAIL + Relayer.RelayServerName);
                      end;
-                     { Free envelope. }
+                     { Free relayer and envelope. }
+                     Relayer.Free;
                      CurrEnv.Free;
                   end;