mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-06 10:29:42 +01:00
* Applied patch from Joao Morais to customize request/response (bug 21980)
git-svn-id: trunk@21313 -
This commit is contained in:
parent
798c9340cc
commit
ad4876dcb5
@ -124,6 +124,8 @@ Type
|
|||||||
function Read_FCGIRecord : PFCGI_Header;
|
function Read_FCGIRecord : PFCGI_Header;
|
||||||
function DataAvailable : Boolean;
|
function DataAvailable : Boolean;
|
||||||
protected
|
protected
|
||||||
|
function CreateRequest : TFCGIRequest; virtual;
|
||||||
|
function CreateResponse(ARequest: TFCGIRequest) : TFCGIResponse; virtual;
|
||||||
Function DoFastCGIRead(AHandle : THandle; Var ABuf; ACount : Integer) : Integer; virtual;
|
Function DoFastCGIRead(AHandle : THandle; Var ABuf; ACount : Integer) : Integer; virtual;
|
||||||
Function DoFastCGIWrite(AHandle : THandle; Const ABuf; ACount : Integer) : Integer; virtual;
|
Function DoFastCGIWrite(AHandle : THandle; Const ABuf; ACount : Integer) : Integer; virtual;
|
||||||
function ProcessRecord(AFCGI_Record: PFCGI_Header; out ARequest: TRequest; out AResponse: TResponse): boolean; virtual;
|
function ProcessRecord(AFCGI_Record: PFCGI_Header; out ARequest: TRequest; out AResponse: TResponse): boolean; virtual;
|
||||||
@ -801,6 +803,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
function TFCgiHandler.CreateRequest: TFCGIRequest;
|
||||||
|
begin
|
||||||
|
Result := TFCGIRequest.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TFCgiHandler.CreateResponse(ARequest: TFCGIRequest): TFCGIResponse;
|
||||||
|
begin
|
||||||
|
Result := TFCGIResponse.Create(ARequest);
|
||||||
|
end;
|
||||||
|
|
||||||
function TFCgiHandler.DoFastCGIRead(AHandle: THandle; var ABuf; ACount: Integer): Integer;
|
function TFCgiHandler.DoFastCGIRead(AHandle: THandle; var ABuf; ACount: Integer): Integer;
|
||||||
begin
|
begin
|
||||||
{$ifdef windowspipe}
|
{$ifdef windowspipe}
|
||||||
@ -839,7 +851,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
assert(not assigned(FRequestsArray[ARequestID].Request));
|
assert(not assigned(FRequestsArray[ARequestID].Request));
|
||||||
assert(not assigned(FRequestsArray[ARequestID].Response));
|
assert(not assigned(FRequestsArray[ARequestID].Response));
|
||||||
ATempRequest:=TFCGIRequest.Create;
|
ATempRequest:=CreateRequest;
|
||||||
InitRequest(ATempRequest);
|
InitRequest(ATempRequest);
|
||||||
ATempRequest.RequestID:=ARequestID;
|
ATempRequest.RequestID:=ARequestID;
|
||||||
ATempRequest.Handle:=FHandle;
|
ATempRequest.Handle:=FHandle;
|
||||||
@ -856,7 +868,7 @@ begin
|
|||||||
else if FRequestsArray[ARequestID].Request.ProcessFCGIRecord(AFCGI_Record) then
|
else if FRequestsArray[ARequestID].Request.ProcessFCGIRecord(AFCGI_Record) then
|
||||||
begin
|
begin
|
||||||
ARequest:=FRequestsArray[ARequestID].Request;
|
ARequest:=FRequestsArray[ARequestID].Request;
|
||||||
FRequestsArray[ARequestID].Response := TFCGIResponse.Create(ARequest);
|
FRequestsArray[ARequestID].Response := CreateResponse(TFCGIRequest(ARequest));
|
||||||
InitResponse(FRequestsArray[ARequestID].Response);
|
InitResponse(FRequestsArray[ARequestID].Response);
|
||||||
FRequestsArray[ARequestID].Response.ProtocolOptions:=Self.ProtocolOptions;
|
FRequestsArray[ARequestID].Response.ProtocolOptions:=Self.ProtocolOptions;
|
||||||
FRequestsArray[ARequestID].Response.FOnWrite:=@DoFastCGIWrite;
|
FRequestsArray[ARequestID].Response.FOnWrite:=@DoFastCGIWrite;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user