aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-02-06 11:36:13 -0500
committerNick Mathewson <nickm@torproject.org>2018-02-06 11:36:13 -0500
commit87db5a6b758db2e0a69c34acfc2481a91018d9aa (patch)
treedaa940eb76c9e9da60b65bb9f054dc754e95be2f
parentb5a8fd1566e137f27c49d132755d2ad9e5c74f4e (diff)
parent3d9dcb49eb50b6c4681e66c847a320ace1d1c843 (diff)
downloadtor-87db5a6b758db2e0a69c34acfc2481a91018d9aa.tar.gz
tor-87db5a6b758db2e0a69c34acfc2481a91018d9aa.zip
Merge remote-tracking branch 'arma/bug22212'
-rw-r--r--changes/bug22212-forreal8
-rw-r--r--src/or/connection_or.c9
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;
}