From fca859d93d8e8cce28fac96186b94e48ed64d7f4 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Wed, 25 Jun 2025 20:00:44 -0400 Subject: [PATCH] ssb: Are we inadvertantly closing connections when an inner tunnel request ends? --- src/ssb.rpc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ssb.rpc.c b/src/ssb.rpc.c index 651613d5..db3d9d7b 100644 --- a/src/ssb.rpc.c +++ b/src/ssb.rpc.c @@ -303,6 +303,7 @@ typedef struct tunnel_t { tf_ssb_connection_t* connection; int32_t request_number; + bool close_on_error; } tunnel_t; static void _tf_ssb_rpc_tunnel_callback(tf_ssb_connection_t* connection, uint8_t flags, int32_t request_number, JSValue args, const uint8_t* message, size_t size, void* user_data) @@ -333,7 +334,10 @@ static void _tf_ssb_rpc_tunnel_callback(tf_ssb_connection_t* connection, uint8_t JS_FreeValue(context, stack_val); JS_FreeValue(context, message_val); - tf_ssb_connection_close(tun->connection, buffer); + if (tun->close_on_error) + { + tf_ssb_connection_close(tun->connection, buffer); + } } else { @@ -396,6 +400,7 @@ static void _tf_ssb_rpc_tunnel_connect(tf_ssb_connection_t* connection, uint8_t *data0 = (tunnel_t) { .connection = target_connection, .request_number = tunnel_request_number, + .close_on_error = true, }; tunnel_t* data1 = tf_malloc(sizeof(tunnel_t)); *data1 = (tunnel_t) {