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) {