mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 02:29:12 +02:00
* Fixed memory leak when reading fastcgi records
git-svn-id: trunk@15863 -
This commit is contained in:
parent
2011328acf
commit
6f1dfa1353
@ -525,34 +525,36 @@ begin
|
||||
repeat
|
||||
AFCGI_Record:=Read_FCGIRecord;
|
||||
if assigned(AFCGI_Record) then
|
||||
begin
|
||||
ARequestID:=BEtoN(AFCGI_Record^.requestID);
|
||||
if AFCGI_Record^.reqtype = FCGI_BEGIN_REQUEST then
|
||||
begin
|
||||
if ARequestID>FRequestsAvail then
|
||||
try
|
||||
ARequestID:=BEtoN(AFCGI_Record^.requestID);
|
||||
if AFCGI_Record^.reqtype = FCGI_BEGIN_REQUEST then
|
||||
begin
|
||||
inc(FRequestsAvail,10);
|
||||
SetLength(FRequestsArray,FRequestsAvail);
|
||||
end;
|
||||
assert(not assigned(FRequestsArray[ARequestID].Request));
|
||||
assert(not assigned(FRequestsArray[ARequestID].Response));
|
||||
if ARequestID>FRequestsAvail then
|
||||
begin
|
||||
inc(FRequestsAvail,10);
|
||||
SetLength(FRequestsArray,FRequestsAvail);
|
||||
end;
|
||||
assert(not assigned(FRequestsArray[ARequestID].Request));
|
||||
assert(not assigned(FRequestsArray[ARequestID].Response));
|
||||
|
||||
ATempRequest:=TFCGIRequest.Create;
|
||||
ATempRequest.RequestID:=ARequestID;
|
||||
ATempRequest.Handle:=FHandle;
|
||||
ATempRequest.ProtocolOptions:=Self.Protocoloptions;
|
||||
ATempRequest.OnUnknownRecord:=Self.OnUnknownRecord;
|
||||
FRequestsArray[ARequestID].Request := ATempRequest;
|
||||
end;
|
||||
if FRequestsArray[ARequestID].Request.ProcessFCGIRecord(AFCGI_Record) then
|
||||
begin
|
||||
ARequest:=FRequestsArray[ARequestID].Request;
|
||||
FRequestsArray[ARequestID].Response := TFCGIResponse.Create(ARequest);
|
||||
FRequestsArray[ARequestID].Response.ProtocolOptions:=Self.ProtocolOptions;
|
||||
AResponse:=FRequestsArray[ARequestID].Response;
|
||||
Result := True;
|
||||
Break;
|
||||
end;
|
||||
ATempRequest:=TFCGIRequest.Create;
|
||||
ATempRequest.RequestID:=ARequestID;
|
||||
ATempRequest.Handle:=FHandle;
|
||||
ATempRequest.ProtocolOptions:=Self.Protocoloptions;
|
||||
ATempRequest.OnUnknownRecord:=Self.OnUnknownRecord;
|
||||
FRequestsArray[ARequestID].Request := ATempRequest;
|
||||
end;
|
||||
if FRequestsArray[ARequestID].Request.ProcessFCGIRecord(AFCGI_Record) then
|
||||
begin
|
||||
ARequest:=FRequestsArray[ARequestID].Request;
|
||||
FRequestsArray[ARequestID].Response := TFCGIResponse.Create(ARequest);
|
||||
FRequestsArray[ARequestID].Response.ProtocolOptions:=Self.ProtocolOptions;
|
||||
AResponse:=FRequestsArray[ARequestID].Response;
|
||||
Result := True;
|
||||
Break;
|
||||
end;
|
||||
Finally
|
||||
FreeMem(AFCGI_Record);
|
||||
end;
|
||||
until (1<>1);
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user