Zvone wrote: > >> something, worth to be tested anyway: >> [...] > > I'll take a look and test this code soon enough. Thanks.
Try the change below instead, otherwise you might get Integer overflow exceptions. It happens that even though the socket is paused the component receives data after it got a close notify message. When we Pause the socket there may still be notify messages from Winsock in the message queue, so be prepared that the throttle and timeout might not work reliable always. {code} function TCustomThrottledWSocket.RealSend(var Data: TWSocketData; Len: Integer): Integer; begin if FBandwidthEnabled and (Len > 0) and (FBandwidthCount < FBandwidthMaxCount) and (FBandwidthCount + LongWord(Len) > FBandwidthMaxCount) then Len := (FBandwidthMaxCount - FBandwidthCount) + 1; Result := inherited RealSend(Data, Len); if FBandwidthEnabled and (Result > 0) then begin Inc(FBandwidthCount, Result); if (FBandwidthCount > FBandwidthMaxCount) and (not FBandwidthPaused) then begin FBandwidthPaused := TRUE; Pause; end; end; end; {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} function TCustomThrottledWSocket.Receive(Buffer: TWSocketData; BufferSize: Integer): Integer; begin if FBandwidthEnabled and (BufferSize > 0) and (FBandwidthCount < FBandwidthMaxCount) and (FBandwidthCount + LongWord(BufferSize) > FBandwidthMaxCount) then BufferSize := (FBandwidthMaxCount - FBandwidthCount) + 1; Result := inherited Receive(Buffer, BufferSize); if FBandwidthEnabled and (Result > 0) then begin Inc(FBandwidthCount, Result); if (FBandwidthCount > FBandwidthMaxCount) and (not FBandwidthPaused) then begin FBandwidthPaused := TRUE; Pause; end; end; end; {code} -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be