3. Der SSLContext vom TIdServerIOHandlerSSLOpenSSL muss gepatcht werden:
Hierzu die Source-Datei aus dem Anhang (uOpenSSLPatch.pas) verwenden und z.B. im FormCreate folgenden Befehl aufrufen:
Delphi-Quellcode:
//OpenSSL Patchen...
SSL_CTX_patch(IdServerIOHandlerSSLOpenSSL.SSLContext.InternalContext);
Das führt bei mir zu einer Zugriffsverletzung.
Delphi-Quellcode:
function TIdSSLContextHelper.InternalContext: PSSL_CTX;
begin
Result := Self.FContext;
end;
Self ist bei mir NIL.
ich setzte das auch nicht auf eine Form, sondern habe das in einem Thread.
Ich wollte das so machen:
Delphi-Quellcode:
FIdServerIOHandlerSSLOpenSLL:=TIdServerIOHandlerSSLOpenSSL.Create(nil);
SSL_CTX_patch(FIdServerIOHandlerSSLOpenSLL.SSLContext.InternalContext);
FIdServerIOHandlerSSLOpenSLL.OnGetPassword:=IdSSLIOHandlerSocketOpenSSL1GetPassword;
ich kann's natürlich auch im ThreadCreate machen, aber da gibt es mein FIdServerIOHandlerSSLOpenSSL noch gar nicht. Ich erzeuge den erst im ThreadExecute. Muss von TIdSSLContextHelper keine Instanz erzeugt werden?