mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
We were sometimes miscounting the number of bytes read from the
network, causing our rate limiting to not be followed exactly. Bugfix on 0.2.0.16-alpha. Reported by lodger. svn:r13799
This commit is contained in:
+9
-8
@@ -635,13 +635,13 @@ read_to_buf(int s, size_t at_most, buf_t *buf, int *reached_eof)
|
||||
check();
|
||||
if (r < 0)
|
||||
return r; /* Error */
|
||||
else if ((size_t)r < readlen) { /* eof, block, or no more to read. */
|
||||
tor_assert(r+total_read < INT_MAX);
|
||||
return (int)(r + total_read);
|
||||
}
|
||||
tor_assert(total_read+r < INT_MAX);
|
||||
total_read += r;
|
||||
if ((size_t)r < readlen) { /* eof, block, or no more to read. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
return (int)total_read;
|
||||
}
|
||||
|
||||
/** As read_to_buf, but reads from a TLS connection, and returns a TLS
|
||||
@@ -689,11 +689,12 @@ read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf)
|
||||
check();
|
||||
if (r < 0)
|
||||
return r; /* Error */
|
||||
else if ((size_t)r < readlen) /* eof, block, or no more to read. */
|
||||
return r;
|
||||
tor_assert(total_read+r < INT_MAX);
|
||||
total_read += r;
|
||||
if ((size_t)r < readlen) /* eof, block, or no more to read. */
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
return (int)total_read;
|
||||
}
|
||||
|
||||
/** Helper for flush_buf(): try to write <b>sz</b> bytes from chunk
|
||||
|
||||
Reference in New Issue
Block a user