git-svn-id: file:///svnroot/lcore/trunk@17 b1de8a11-f9be-4011-bde0-cc7ace90066a
[lcore.git] / lcore.pas
index 30e9c09dc9d77e5f20f1f6fa8883a82fafff4051..f6b0342410219fba55072aa7bf95c5a850661fff 100755 (executable)
--- a/lcore.pas
+++ b/lcore.pas
@@ -35,7 +35,7 @@ interface
 \r
 \r
   const\r
 \r
 \r
   const\r
-    receivebufsize=1460;\r
+    receivebufsize=1460*8;\r
 \r
   var\r
     absoloutemaxs:integer=0;\r
 \r
   var\r
     absoloutemaxs:integer=0;\r
@@ -99,6 +99,7 @@ interface
       onfdwrite           : procedure (Sender: TObject; Error: word) of object; //added for bewarehttpd\r
       lasterror:integer;\r
       destroying:boolean;\r
       onfdwrite           : procedure (Sender: TObject; Error: word) of object; //added for bewarehttpd\r
       lasterror:integer;\r
       destroying:boolean;\r
+      recvbufsize:integer;\r
       function receivestr:string; virtual;\r
       procedure close;\r
       procedure abort;\r
       function receivestr:string; virtual;\r
       procedure close;\r
       procedure abort;\r
@@ -552,6 +553,7 @@ procedure tlasio.handlefdtrigger(readtrigger,writetrigger:boolean);
 var\r
   sendflushresult : integer;\r
   tempbuf:array[0..receivebufsize-1] of byte;\r
 var\r
   sendflushresult : integer;\r
   tempbuf:array[0..receivebufsize-1] of byte;\r
+  a:integer;\r
 begin\r
   if (state=wsconnected) and writetrigger then begin\r
     //writeln('write trigger');\r
 begin\r
   if (state=wsconnected) and writetrigger then begin\r
     //writeln('write trigger');\r
@@ -578,7 +580,9 @@ begin
   writtenthiscycle := false;\r
   if (state =wsconnected) and readtrigger then begin\r
     if recvq.size=0 then begin\r
   writtenthiscycle := false;\r
   if (state =wsconnected) and readtrigger then begin\r
     if recvq.size=0 then begin\r
-      numread := myfdread(fdhandlein,tempbuf,sizeof(tempbuf));\r
+      a := recvbufsize;\r
+      if (a <= 0) or (a > sizeof(tempbuf)) then a := sizeof(tempbuf);\r
+      numread := myfdread(fdhandlein,tempbuf,a);\r
       if (numread=0) and (not mustrefreshfds) then begin\r
         {if i remember correctly numread=0 is caused by eof\r
         if this isn't dealt with then you get a cpu eating infinite loop\r
       if (numread=0) and (not mustrefreshfds) then begin\r
         {if i remember correctly numread=0 is caused by eof\r
         if this isn't dealt with then you get a cpu eating infinite loop\r