On Thu, 24 Apr 2014, silvioprog wrote:
Hello,
I've tested the CustHttpApp unit in new released FPC 2.6.4 on Windows, and the error
"Missing HTTP protocol version in request" still
continues.
I'll show detailed steps (including my tools) to reproduce it:
1. on Windows (I'm using 8), download and install the latest Lazarus/FPC
version:
"http://downloads.sourceforge.net/project/lazarus/Lazarus%20Windows%2032%20bits/Lazarus%201.2.2/lazarus-1.2.2-fpc-2.6.4-win32.exe";
2. download this source code (the project to reproduce the bug) from link
"https://www.dropbox.com/s/rmfitgh7b58cf1g/es_bug.zip" or in
attachment;
3. in "Tools | Options ..." menu, got to the "Debugger > Language Exceptions" page, and
check the "Notify on Lazarus Exceptions"
option;
4. run the project with F9 (notice that I left a breakpoint);
5. using the "Advanced REST client" Chrome plugin
"https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo",
fill the URL with
"http://localhost:1025" and click in "Send" button;
6. push F9 until the Lazarus exits from breakpoint;
7. wait a few moments, that Lazarus will go to the breakpoint after some
secounds;
When Lazarus go to the breakpoint again, push F8 several times, and notice that in line
363, the "R" variable will receive the zero
value:
...
Procedure FillBuffer;
Var
R : Integer;
begin
SetLength(FBuffer,ReadBufLen);
r:=FSocket.Read(FBuffer[1],ReadBufLen); <<< HERE!
If r<0 then
Raise EHTTPServer.Create(SErrReadingSocket);
if (r<ReadBuflen) then
SetLength(FBuffer,r);
end;
Damn windows returning 0 on read...
Can you please test with the following change:
Procedure FillBuffer;
Var
R : Integer;
begin
SetLength(FBuffer,ReadBufLen);
Repeat
r:=FSocket.Read(FBuffer[1],ReadBufLen);
If r<0 then
Raise EHTTPServer.Create(SErrReadingSocket);
if R=0 then
Sleep(10);
Until (R<>0);
if (R<ReadBuflen) then
SetLength(FBuffer,r);
end;
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal