tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 9f61d9238ce81444b988137508436255f275051d
parent 336c45f1a5b30b31cbb76a2622a6e80d755db2b5
Author: David Goulet <dgoulet@torproject.org>
Date:   Wed, 17 Feb 2021 09:54:05 -0500

metrics: Handle the connection finished flushing event

Turns out, we forgot to add the METRICS connection type fo the finished
flushing handler.

Fixes #40295

Signed-off-by: David Goulet <dgoulet@torproject.org>

Diffstat:
Achanges/ticket40295 | 3+++
Msrc/core/mainloop/connection.c | 2++
Msrc/feature/metrics/metrics.c | 9+++++++++
Msrc/feature/metrics/metrics.h | 1+
4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/changes/ticket40295 b/changes/ticket40295 @@ -0,0 +1,3 @@ + o Minor bugfixes (metrics port): + - Fix a BUG() on the MetricsPort for an internal missing handler. Fixes bug + 40295; bugfix on 0.4.5.1-alpha. diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c @@ -5187,6 +5187,8 @@ connection_finished_flushing(connection_t *conn) return connection_dir_finished_flushing(TO_DIR_CONN(conn)); case CONN_TYPE_CONTROL: return connection_control_finished_flushing(TO_CONTROL_CONN(conn)); + case CONN_TYPE_METRICS: + return metrics_connection_finished_flushing(conn); default: log_err(LD_BUG,"got unexpected conn type %d.", conn->type); tor_fragile_assert(); diff --git a/src/feature/metrics/metrics.c b/src/feature/metrics/metrics.c @@ -258,6 +258,15 @@ metrics_connection_reached_eof(connection_t *conn) return 0; } +/** Called when conn has no more bytes left on its outbuf. Return 0 indicating + * success. */ +int +metrics_connection_finished_flushing(connection_t *conn) +{ + tor_assert(conn); + return 0; +} + /** Initialize the subsystem. */ void metrics_init(void) diff --git a/src/feature/metrics/metrics.h b/src/feature/metrics/metrics.h @@ -28,6 +28,7 @@ buf_t *metrics_get_output(const metrics_format_t fmt); /* Connection. */ int metrics_connection_process_inbuf(struct connection_t *conn); int metrics_connection_reached_eof(struct connection_t *conn); +int metrics_connection_finished_flushing(struct connection_t *conn); /* Configuration. */ int metrics_parse_ports(or_options_t *options, smartlist_t *ports,