|
@@ -35,7 +35,9 @@ Type
|
|
TFPHTTPConnectionRequest = Class(TRequest)
|
|
TFPHTTPConnectionRequest = Class(TRequest)
|
|
private
|
|
private
|
|
FConnection: TFPHTTPConnection;
|
|
FConnection: TFPHTTPConnection;
|
|
|
|
+
|
|
protected
|
|
protected
|
|
|
|
+ procedure SetContent(AValue : String);
|
|
Property Connection : TFPHTTPConnection Read FConnection;
|
|
Property Connection : TFPHTTPConnection Read FConnection;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -208,6 +210,32 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TFPHTTPConnectionRequest.SetContent(AValue : String);
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ FContent:=Avalue;
|
|
|
|
+ FContentRead:=true;
|
|
|
|
+end;
|
|
|
|
+(*
|
|
|
|
+Procedure TFPHTTPConnectionRequest.SetFieldValue(Index : Integer; Value : String);
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ if Index=35 then
|
|
|
|
+ FContent:=Value
|
|
|
|
+ else
|
|
|
|
+ Inherited (Index,Value);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+Function TFPHTTPConnectionRequest.GetFieldValue(Index : Integer) : String;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ if Index=35 then
|
|
|
|
+ Result:=FContent
|
|
|
|
+ else
|
|
|
|
+ Result:=Inherited GetFieldValue(Index);
|
|
|
|
+end;
|
|
|
|
+*)
|
|
|
|
+
|
|
procedure TFPHTTPConnectionResponse.DoSendHeaders(Headers: TStrings);
|
|
procedure TFPHTTPConnectionResponse.DoSendHeaders(Headers: TStrings);
|
|
|
|
|
|
Var
|
|
Var
|
|
@@ -269,6 +297,7 @@ begin
|
|
Delete(FBuffer,1,1);
|
|
Delete(FBuffer,1,1);
|
|
Done:=True;
|
|
Done:=True;
|
|
end;
|
|
end;
|
|
|
|
+ CheckLF:=False;
|
|
end;
|
|
end;
|
|
if not Done then
|
|
if not Done then
|
|
begin
|
|
begin
|
|
@@ -360,9 +389,14 @@ begin
|
|
SetLength(S,L);
|
|
SetLength(S,L);
|
|
P:=Length(FBuffer);
|
|
P:=Length(FBuffer);
|
|
if (P>0) then
|
|
if (P>0) then
|
|
- Move(FBuffer[1],S,P);
|
|
|
|
|
|
+ begin
|
|
|
|
+ Move(FBuffer[1],S[1],P);
|
|
|
|
+ L:=L-P;
|
|
|
|
+ end;
|
|
P:=P+1;
|
|
P:=P+1;
|
|
- Repeat
|
|
|
|
|
|
+ R:=1;
|
|
|
|
+ While (L<>0) and (R>0) do
|
|
|
|
+ begin
|
|
R:=FSocket.Read(S[p],L);
|
|
R:=FSocket.Read(S[p],L);
|
|
If R<0 then
|
|
If R<0 then
|
|
Raise EHTTPServer.Create(SErrReadingSocket);
|
|
Raise EHTTPServer.Create(SErrReadingSocket);
|
|
@@ -371,9 +405,9 @@ begin
|
|
P:=P+R;
|
|
P:=P+R;
|
|
L:=L-R;
|
|
L:=L-R;
|
|
end;
|
|
end;
|
|
- until (L=0) or (R=0);
|
|
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
- ARequest.Content:=S;
|
|
|
|
|
|
+ ARequest.SetContent(S);
|
|
end;
|
|
end;
|
|
|
|
|
|
function TFPHTTPConnection.ReadRequestHeaders: TFPHTTPConnectionRequest;
|
|
function TFPHTTPConnection.ReadRequestHeaders: TFPHTTPConnectionRequest;
|
|
@@ -417,7 +451,9 @@ begin
|
|
try
|
|
try
|
|
// Read content, if any
|
|
// Read content, if any
|
|
If Req.ContentLength>0 then
|
|
If Req.ContentLength>0 then
|
|
|
|
+ begin
|
|
ReadRequestContent(Req);
|
|
ReadRequestContent(Req);
|
|
|
|
+ end;
|
|
// Create Response
|
|
// Create Response
|
|
Resp:= TFPHTTPConnectionResponse.Create(Req);
|
|
Resp:= TFPHTTPConnectionResponse.Create(Req);
|
|
try
|
|
try
|