diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-06-27 10:31:33 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-06-27 10:31:33 -0400 |
commit | fd16dd2608ba3a1f97fb13bf7ae3b6640e90376a (patch) | |
tree | 90fd30833ae7196c526528fa5258ac72aca63493 /src | |
parent | 32596016a2a16fcbfa9b201b2f3a5437a46dad17 (diff) | |
parent | 50be4600ae14687b9f4901b4d38a5dce644f5648 (diff) | |
download | tor-fd16dd2608ba3a1f97fb13bf7ae3b6640e90376a.tar.gz tor-fd16dd2608ba3a1f97fb13bf7ae3b6640e90376a.zip |
Merge branch 'bug22719_031' into maint-0.3.1
Diffstat (limited to 'src')
-rw-r--r-- | src/or/buffers.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/or/buffers.c b/src/or/buffers.c index 3692ed4d08..12a6c0239b 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -2092,7 +2092,7 @@ fetch_from_buf_line(buf_t *buf, char *data_out, size_t *data_len) int write_to_buf_compress(buf_t *buf, tor_compress_state_t *state, const char *data, size_t data_len, - int done) + const int done) { char *next; size_t old_avail, avail; @@ -2114,8 +2114,10 @@ write_to_buf_compress(buf_t *buf, tor_compress_state_t *state, case TOR_COMPRESS_ERROR: return -1; case TOR_COMPRESS_OK: - if (data_len == 0) + if (data_len == 0) { + tor_assert_nonfatal(!done); over = 1; + } break; case TOR_COMPRESS_BUFFER_FULL: if (avail) { @@ -2124,6 +2126,11 @@ write_to_buf_compress(buf_t *buf, tor_compress_state_t *state, * whether were going to or not. */ need_new_chunk = 1; } + if (data_len == 0 && !done) { + /* We've consumed all the input data, though, so there's no + * point in forging ahead right now. */ + over = 1; + } break; } buf->datalen += old_avail - avail; |