From 6d40600ab5dcf86228d4922dfd4ea6fd2684d311 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 23 Jan 2013 08:48:16 +0000 Subject: [PATCH] * Speed up HEAD git-svn-id: trunk@23502 - --- packages/fcl-web/src/base/fphttpclient.pp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/fcl-web/src/base/fphttpclient.pp b/packages/fcl-web/src/base/fphttpclient.pp index bdf698df8c..8a399debed 100644 --- a/packages/fcl-web/src/base/fphttpclient.pp +++ b/packages/fcl-web/src/base/fphttpclient.pp @@ -59,7 +59,7 @@ Type // Check if response code is in AllowedResponseCodes. if not, an exception is raised. function CheckResponseCode(ACode: Integer; const AllowedResponseCodes: array of Integer): Boolean; virtual; // Read response from server, and write any document to Stream. - procedure ReadResponse(Stream: TStream; const AllowedResponseCodes: array of Integer); virtual; + procedure ReadResponse(Stream: TStream; const AllowedResponseCodes: array of Integer; HeadersOnly: Boolean = False); virtual; // Read server response line and headers. Returns status code. Function ReadResponseHeaders : integer; virtual; // Allow header in request ? (currently checks only if non-empty and contains : token) @@ -599,7 +599,7 @@ begin GetCookies.Assign(AValue); end; -procedure TFPCustomHTTPClient.ReadResponse(Stream: TStream; Const AllowedResponseCodes : Array of Integer); +procedure TFPCustomHTTPClient.ReadResponse(Stream: TStream; Const AllowedResponseCodes : Array of Integer; HeadersOnly: Boolean = False); Function Transfer(LB : Integer) : Integer; @@ -719,6 +719,8 @@ begin FResponseStatusCode:=ReadResponseHeaders; if not CheckResponseCode(FResponseStatusCode,AllowedResponseCodes) then Raise EHTTPClient.CreateFmt(SErrUnexpectedResponse,[ResponseStatusCode]); + if HeadersOnly then + exit; if CompareText(CheckTransferEncoding,'chunked')=0 then ReadChunkedResponse else @@ -765,7 +767,7 @@ begin ConnectToServer(URI.Host,URI.Port); try SendRequest(AMethod,URI); - ReadResponse(Stream,AllowedResponseCodes); + ReadResponse(Stream,AllowedResponseCodes,CompareText(AMethod,'HEAD')=0); finally DisconnectFromServer; end;