aboutsummaryrefslogtreecommitdiff
path: root/src/core/or/circuit_st.h
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2019-01-09 15:08:14 -0500
committerDavid Goulet <dgoulet@torproject.org>2019-04-29 12:17:57 -0400
commit93f9fbbd34f03aca68c8c64a7e39b64548462eeb (patch)
tree0dbc64e43dcb4b1773fc09a88a546c045f335918 /src/core/or/circuit_st.h
parent81706d84279f0a2870f8b1789403188fd933b32a (diff)
downloadtor-93f9fbbd34f03aca68c8c64a7e39b64548462eeb.tar.gz
tor-93f9fbbd34f03aca68c8c64a7e39b64548462eeb.zip
prop289: Keep track of the last seen cell digests
This makes tor remember the last seen digest of a cell if that cell is the last one before a SENDME on the Exit side. Closes #26839 Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/core/or/circuit_st.h')
-rw-r--r--src/core/or/circuit_st.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/or/circuit_st.h b/src/core/or/circuit_st.h
index cc21cf62f7..5adb158935 100644
--- a/src/core/or/circuit_st.h
+++ b/src/core/or/circuit_st.h
@@ -104,6 +104,12 @@ struct circuit_t {
* circuit-level sendme cells to indicate that we're willing to accept
* more. */
int deliver_window;
+ /** FIFO containing the digest of the cells that are just before a SENDME is
+ * sent by the client. It is done at the last cell before our package_window
+ * goes down to 0 which is when we expect a SENDME. The protocol doesn't
+ * allow more than 10 outstanding SENDMEs worth of data meaning this list
+ * should only contain at most 10 digests of 4 bytes each. */
+ smartlist_t *sendme_last_digests;
/** Temporary field used during circuits_handle_oom. */
uint32_t age_tmp;