diff --git a/ChangeLog b/ChangeLog index 82ccb07d9..8d3ac9665 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,25 @@ Changes in version 0.2.1.1-alpha - 2008-??-?? Bugfix on 0.2.0.20-rc. +Changes in version 0.2.0.21-rc - 2008-03-02 + 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. Reported by fredzupy. + - 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. + Bugfix on 0.2.0.20-rc. + + Changes in version 0.2.0.20-rc - 2008-02-24 Tor 0.2.0.20-rc is the first release candidate for the 0.2.0 series. It makes more progress towards normalizing Tor's TLS handshake, makes diff --git a/doc/TODO b/doc/TODO index dc97431c2..e9cc32ed7 100644 --- a/doc/TODO +++ b/doc/TODO @@ -234,6 +234,7 @@ Planned for 0.2.1.x: - get rid of the v1 directory stuff (making, serving, and caching). - perhaps replace it with a "this is a tor server" stock webpage. + - even clients run rep_hist_load_mtbf_data(). this wastes memory. - bridge communities with local bridge authorities: - clients who have a password configured decide to ask their bridge diff --git a/src/or/buffers.c b/src/or/buffers.c index 7b54dd396..d91482d85 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -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; - total_read += 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 sz bytes from chunk