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:
Roger Dingledine
2008-03-02 07:11:09 +00:00
parent 211da8ea14
commit 37f2f548bf
2 changed files with 15 additions and 9 deletions
+9 -8
View File
@@ -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