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
+6 -1
View File
@@ -1,11 +1,16 @@
Changes in version 0.2.0.21-rc - 2008-0?-??
o Bugfixes:
o Major bugfixes:
- The control port should declare that it requires password auth
when HashedControlSessionPassword is set too. Patch from Matt Edman;
bugfix on 0.2.0.20-rc. Fixes bug 615.
- Downgrade assert in connection_buckets_decrement() to a log message.
This may help us solve bug 614, and in any case will make its
symptoms less severe. Bugfix on 0.2.0.20-rc.
- 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.
o Minor bugfixes:
- Fix compilation with OpenSSL 0.9.8 and 0.9.8a. All other supported
OpenSSL versions should have been working fine. Diagnosis and patch
from lodger, Karsten Loesing and Sebastian Hahn. Fixes bug 616.
+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