Skip to content

Commit c76ca9d

Browse files
AdministratorAdministrator
Administrator
authored and
Administrator
committed
only send part of the buffer (not the whole 32kb!)
1 parent 5820937 commit c76ca9d

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

IdIOHandlerWebsocket.pas

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,8 @@ procedure TIdIOHandlerWebsocket.WriteBufferFlush(AByteCount: Integer);
556556

557557
function TIdIOHandlerWebsocket.WriteDataToTarget(const ABuffer: TIdBytes;
558558
const AOffset, ALength: Integer): Integer;
559+
var
560+
data: TIdBytes;
559561
begin
560562
if UseSingleWriteThread and IsWebsocket and (GetCurrentThreadId <> TIdWebsocketWriteThread.Instance.ThreadID) then
561563
Assert(False, 'Write done in different thread than TIdWebsocketWriteThread!');
@@ -574,17 +576,19 @@ function TIdIOHandlerWebsocket.WriteDataToTarget(const ABuffer: TIdBytes;
574576
end
575577
else
576578
begin
579+
data := ToBytes(ABuffer, ALength, AOffset);
577580
{$IFDEF DEBUG_WS}
578581
if Debughook > 0 then
579582
OutputDebugString(PChar(Format('Send (ws, TID:%d, P:%d): %s',
580-
[getcurrentthreadid, Self.Binding.PeerPort, BytesToStringRaw(ABuffer)])));
583+
[getcurrentthreadid, Self.Binding.PeerPort, BytesToStringRaw(data)])));
584+
581585
{$ENDIF}
582586
try
583587
if FWriteTextToTarget then
584-
Result := WriteData(ABuffer, wdcText, True{send all at once},
588+
Result := WriteData(data, wdcText, True{send all at once},
585589
webBit1 in ClientExtensionBits, webBit2 in ClientExtensionBits, webBit3 in ClientExtensionBits)
586590
else
587-
Result := WriteData(ABuffer, wdcBinary, True{send all at once},
591+
Result := WriteData(data, wdcBinary, True{send all at once},
588592
webBit1 in ClientExtensionBits, webBit2 in ClientExtensionBits, webBit3 in ClientExtensionBits);
589593
except
590594
FClosedGracefully := True;

0 commit comments

Comments
 (0)