Browse Source

* Fixed memory leak, context and SSL object must be freed

git-svn-id: trunk@27739 -
michael 11 years ago
parent
commit
6d43208e44
1 changed files with 8 additions and 11 deletions
  1. 8 11
      packages/fcl-net/src/sslsockets.pp

+ 8 - 11
packages/fcl-net/src/sslsockets.pp

@@ -44,17 +44,16 @@ Type
     FCTX : TSSLContext;
     FCTX : TSSLContext;
     FSSLActive : Boolean;
     FSSLActive : Boolean;
     FSendHostAsSNI : Boolean;
     FSendHostAsSNI : Boolean;
-    function CheckSSL(SSLResult: Integer): Boolean;
-    function CheckSSL(SSLResult: Pointer): Boolean;
-    function DoneContext: Boolean;
-    Function FetchErrorInfo: Boolean;
     function GetSSLData(AIndex: Integer): TSSLData;
     function GetSSLData(AIndex: Integer): TSSLData;
-    function InitContext(NeedCertificate: Boolean): Boolean;
-    function InitSslKeys: boolean;
     procedure SetSSLData(AIndex: Integer; AValue: TSSLData);
     procedure SetSSLData(AIndex: Integer; AValue: TSSLData);
     procedure SetSSLLastErrorString(AValue: string);
     procedure SetSSLLastErrorString(AValue: string);
   protected
   protected
-    procedure ReturnError;
+    Function FetchErrorInfo: Boolean;
+    function CheckSSL(SSLResult: Integer): Boolean;
+    function CheckSSL(SSLResult: Pointer): Boolean;
+    function InitContext(NeedCertificate: Boolean): Boolean; virtual;
+    function DoneContext: Boolean; virtual;
+    function InitSslKeys: boolean;virtual;
     function DoVerifyCert:boolean;
     function DoVerifyCert:boolean;
   public
   public
     constructor Create; override;
     constructor Create; override;
@@ -125,10 +124,6 @@ begin
   FSSLLastErrorString:=AValue;
   FSSLLastErrorString:=AValue;
 end;
 end;
 
 
-procedure TSSLSocketHandler.ReturnError;
-begin
-
-end;
 
 
 function TSSLSocketHandler.DoVerifyCert: boolean;
 function TSSLSocketHandler.DoVerifyCert: boolean;
 begin
 begin
@@ -156,6 +151,8 @@ Var
   I : Integer;
   I : Integer;
 
 
 begin
 begin
+  FreeAndNil(FSSL);
+  FreeAndNil(FCTX);
   inherited Destroy;
   inherited Destroy;
   For I:=0 to SSLDataCount do
   For I:=0 to SSLDataCount do
     FreeAndNil(FCertData[i]);
     FreeAndNil(FCertData[i]);