[tor-commits] [tor/master] metrics: Handle the connection finished flushing event

asn at torproject.org asn at torproject.org
Fri Feb 19 11:27:18 UTC 2021


commit 9f61d9238ce81444b988137508436255f275051d
Author: David Goulet <dgoulet at torproject.org>
Date:   Wed Feb 17 09:54:05 2021 -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 at torproject.org>
---
 changes/ticket40295            | 3 +++
 src/core/mainloop/connection.c | 2 ++
 src/feature/metrics/metrics.c  | 9 +++++++++
 src/feature/metrics/metrics.h  | 1 +
 4 files changed, 15 insertions(+)

diff --git a/changes/ticket40295 b/changes/ticket40295
new file mode 100644
index 0000000000..e6dba80120
--- /dev/null
+++ 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
index 85cdec6e1e..ada542629a 100644
--- 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
index 7a77ab1104..9a72fe7145 100644
--- 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
index 858722de59..e072519d10 100644
--- 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,





More information about the tor-commits mailing list