diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-02-06 11:36:13 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-02-06 11:36:13 -0500 |
commit | 87db5a6b758db2e0a69c34acfc2481a91018d9aa (patch) | |
tree | daa940eb76c9e9da60b65bb9f054dc754e95be2f | |
parent | b5a8fd1566e137f27c49d132755d2ad9e5c74f4e (diff) | |
parent | 3d9dcb49eb50b6c4681e66c847a320ace1d1c843 (diff) | |
download | tor-87db5a6b758db2e0a69c34acfc2481a91018d9aa.tar.gz tor-87db5a6b758db2e0a69c34acfc2481a91018d9aa.zip |
Merge remote-tracking branch 'arma/bug22212'
-rw-r--r-- | changes/bug22212-forreal | 8 | ||||
-rw-r--r-- | src/or/connection_or.c | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/changes/bug22212-forreal b/changes/bug22212-forreal new file mode 100644 index 0000000000..3b7e3ca0eb --- /dev/null +++ b/changes/bug22212-forreal @@ -0,0 +1,8 @@ + o Major bugfixes: + - Stop adding unneeded channel padding right after we finish flushing + to a connection that has been trying to flush for many seconds. + Instead, treat all partial or complete flushes as activity on the + channel, which will defer the time until we need to add padding. + This fix should resolve confusing and scary log messages like + "Channel padding timeout scheduled 221453ms in the past." Fixes + bug 22212; bugfix on 0.3.1.1-alpha. diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 8379f58030..455bb66cb3 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -592,6 +592,10 @@ connection_or_flushed_some(or_connection_t *conn) { size_t datalen; + /* Update the channel's active timestamp if there is one */ + if (conn->chan) + channel_timestamp_active(TLS_CHAN_TO_BASE(conn->chan)); + /* If we're under the low water mark, add cells until we're just over the * high water mark. */ datalen = connection_get_outbuf_len(TO_CONN(conn)); @@ -652,6 +656,11 @@ connection_or_finished_flushing(or_connection_t *conn) tor_fragile_assert(); return -1; } + + /* Update the channel's active timestamp if there is one */ + if (conn->chan) + channel_timestamp_active(TLS_CHAN_TO_BASE(conn->chan)); + return 0; } |