Skip to content

Commit 50425d0

Browse files
committed
Fixing timing issue which may cause reads to stop.
1 parent 2f8872f commit 50425d0

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

GCD/GCDAsyncSocket.m

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4371,10 +4371,20 @@ - (void)doReadData
43714371
{
43724372
bytesRead = result;
43734373

4374-
if (socketFDBytesAvailable <= bytesRead)
4374+
if (bytesRead < bytesToRead)
4375+
{
4376+
// The read returned less data than requested.
4377+
// This means socketFDBytesAvailable was a bit off due to timing,
4378+
// because we read from the socket right when the readSource event was firing.
43754379
socketFDBytesAvailable = 0;
4380+
}
43764381
else
4377-
socketFDBytesAvailable -= bytesRead;
4382+
{
4383+
if (socketFDBytesAvailable <= bytesRead)
4384+
socketFDBytesAvailable = 0;
4385+
else
4386+
socketFDBytesAvailable -= bytesRead;
4387+
}
43784388

43794389
if (socketFDBytesAvailable == 0)
43804390
{

0 commit comments

Comments
 (0)