rlebeau on OpenSSL-1.1.x
rlebeau on master
Correctly define timezone funct… Merge pull request #272 from Bi… (compare)
rlebeau on master
Fixing compiler errors in TIdIP… (compare)
rlebeau on master
Fix for missing declaration of … Fix for compiler error in Local… Merge branch 'master' of https:… and 2 more (compare)
rlebeau on master
Update IdGlobal.pas Fix for co… (compare)
rlebeau on master
Update IdGlobal.pas Fix for mi… (compare)
IOHandler.ReadTimeout
property to a short timeout and then handle any EIdReadTimedOut
errors that occur. Or, before calling IOHandler.ReadBytes()
(why not ReadByte()
?), you can check IOHandler.InputBufferIsEmpty
and if True then call IOHandler.CheckForDataOnSource()
with a timeout, and skip ReadByte(s)
until the IOHandler.InputBuffer
actually has something available to read.
/proc/sys/net/ipv6/bindv6only
) that can automatically bind an IPv4 port when binding an IPv6 port without needing separate sockets or the IPV6_V6ONLY option enabled explicitly in code.
found a bug in IdSSLOpenSSL.pas
procedure DumpCert(AOut: TStrings; AX509: PX509);
->
BIO_get_mem_data( LMem, LBufPtr);
if (LLen > 0) and Assigned(LBufPtr) then begin
BIO_get_mem_data expects pointer to pointer
fixed code;
'
var
LMem: PBIO;
LLen : TIdC_INT;
LBufPtr : Pointer;
lPBPtr : Pointer;
begin
if Assigned(X509_print) then begin
LMem := BIO_new(BIO_s_mem);
try
lPBPtr := @LBufPtr;
X509_print(LMem, AX509);
LLen := BIO_get_mem_data( LMem, lPBPtr);
if (LLen > 0) and Assigned(LBufPtr) then begin
'
DumpCert
code is fine. Look at the declaration of BIO_get_mem_data()
in IdSSLOpenSSLHeaders.pas
: function BIO_get_mem_data(b : PBIO; out pp : Pointer) : TIdC_INT;
In Delphi, out: Pointer
is equivilent to void**
in C. The original code was already passing a pointer-to-pointer. Your change is passing a pointer-to-pointer-to-pointer instead