From 8f9d5b6aad9459b61c0c4b1b80fa96b117e0f49a Mon Sep 17 00:00:00 2001
From: geby <geby@7c85be65-684b-0410-a082-b2ed4fbef004>
Date: Wed, 16 Jun 2021 16:05:48 +0000
Subject: [PATCH] blcksock.pas - int64 for counters and TStream support (by
 Pepak)

git-svn-id: https://svn.code.sf.net/p/synalist/code/trunk@226 7c85be65-684b-0410-a082-b2ed4fbef004
---
 blcksock.pas | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/blcksock.pas b/blcksock.pas
index 26ac333..d7e2bfb 100644
--- a/blcksock.pas
+++ b/blcksock.pas
@@ -312,8 +312,8 @@ type
     {$IFNDEF CIL}
     FFDSet: TFDSet;
     {$ENDIF}
-    FRecvCounter: Integer;
-    FSendCounter: Integer;
+    FRecvCounter: int64;
+    FSendCounter: int64;
     FSendMaxChunk: Integer;
     FStopFlag: Boolean;
     FNonblockSendTimeout: Integer;
@@ -546,7 +546,7 @@ type
      occured.)}
     procedure RecvStreamRaw(const Stream: TStream; Timeout: Integer); virtual;
     {:Read requested count of bytes from socket to stream.}
-    procedure RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: Integer);
+    procedure RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: int64);
 
     {:Receive data to stream. It using @link(RecvBlock) method.}
     procedure RecvStream(const Stream: TStream; Timeout: Integer); virtual;
@@ -765,11 +765,11 @@ type
 
     {:Return count of received bytes on this socket from begin of current
      connection.}
-    property RecvCounter: Integer read FRecvCounter;
+    property RecvCounter: int64 read FRecvCounter;
 
     {:Return count of sended bytes on this socket from begin of current
      connection.}
-    property SendCounter: Integer read FSendCounter;
+    property SendCounter: int64 read FSendCounter;
   published
     {:Return descriptive string for given error code. This is class function.
      You may call it without created object!}
@@ -2508,15 +2508,16 @@ begin
   until FLastError <> 0;
 end;
 
-procedure TBlockSocket.RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: Integer);
+procedure TBlockSocket.RecvStreamSize(const Stream: TStream; Timeout: Integer; Size: int64);
 var
   s: AnsiString;
-  n: integer;
+  n: int64;
 {$IFDEF CIL}
   buf: TMemory;
 {$ENDIF}
 begin
-  for n := 1 to (Size div FSendMaxChunk) do
+  n := Size div int64(FSendMaxChunk);
+  while n > 0 do
   begin
     {$IFDEF CIL}
     SetLength(buf, FSendMaxChunk);
@@ -2530,8 +2531,9 @@ begin
       Exit;
     WriteStrToStream(Stream, s);
     {$ENDIF}
+    dec(n);
   end;
-  n := Size mod FSendMaxChunk;
+  n := Size mod int64(FSendMaxChunk);
   if n > 0 then
   begin
     {$IFDEF CIL}