fix streamsocket write-length calculation
Summary:
TrafficShapedSocket::write has a somewhat narrow contract with its caller.
max may be 0 or >0, 0 meaning no limit, >0 meaning limit.
this was incorrectly implemented before where we'd assume max means always
limit, resulting in unlimited calls always resulting in 0 data getting
sent as max would be 0.
the revised code explicitly handles 0 meaning no limit. this is in line
with the behavior of PacketSocket, the only other implementation of
a shaped socket.
BUG: 382375
Test Plan: webseeds start working by default and download at full bandwith
Reviewers: stikonas
Reviewed By: stikonas
Differential Revision: https://phabricator.kde.org/D23111