From f1a2c5ae8e2f873e767dff83acd65df312008f52 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Fri, 31 Jan 2025 20:45:35 -0500 Subject: [PATCH] ssb: Silence some persistent broadcast noise. --- src/httpd.js.c | 4 ++++ src/ssb.c | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/httpd.js.c b/src/httpd.js.c index 046164c6..340306c4 100644 --- a/src/httpd.js.c +++ b/src/httpd.js.c @@ -785,6 +785,10 @@ typedef struct _http_file_t static bool _ends_with(const char* a, const char* suffix) { + if (!a || !suffix) + { + return false; + } size_t alen = strlen(a); size_t suffixlen = strlen(suffix); return alen >= suffixlen && strcmp(a + alen - suffixlen, suffix) == 0; diff --git a/src/ssb.c b/src/ssb.c index 040bf16a..92541fbd 100644 --- a/src/ssb.c +++ b/src/ssb.c @@ -372,7 +372,7 @@ static void _tf_ssb_connection_finalizer(JSRuntime* runtime, JSValue value); static void _tf_ssb_connection_on_close(uv_handle_t* handle); static void _tf_ssb_nonce_inc(uint8_t* nonce); static void _tf_ssb_notify_connections_changed(tf_ssb_t* ssb, tf_ssb_change_t change, tf_ssb_connection_t* connection); -static bool _tf_ssb_parse_connect_string(const char* in_broadcast, tf_ssb_broadcast_t* out_broadcast); +static bool _tf_ssb_parse_connect_string(tf_ssb_t* ssb, const char* in_broadcast, tf_ssb_broadcast_t* out_broadcast); static void _tf_ssb_start_update_settings(tf_ssb_t* ssb); static void _tf_ssb_update_settings(tf_ssb_t* ssb); static void _tf_ssb_write(tf_ssb_connection_t* connection, void* data, size_t size); @@ -3322,7 +3322,7 @@ static void _tf_ssb_update_seeds_after_work(tf_ssb_t* ssb, int status, void* use for (int i = 0; i < seeds->seeds_count; i++) { tf_ssb_broadcast_t broadcast = { .origin = k_tf_ssb_broadcast_origin_peer_exchange }; - if (_tf_ssb_parse_connect_string(seeds->seeds[i], &broadcast)) + if (_tf_ssb_parse_connect_string(ssb, seeds->seeds[i], &broadcast)) { _tf_ssb_add_broadcast(ssb, &broadcast, k_seed_expire_seconds); } @@ -3431,7 +3431,7 @@ bool tf_ssb_whoami(tf_ssb_t* ssb, char* out_id, size_t out_id_size) return tf_ssb_id_bin_to_str(out_id, out_id_size, ssb->pub); } -static bool _tf_ssb_parse_connect_string(const char* in_broadcast, tf_ssb_broadcast_t* out_broadcast) +static bool _tf_ssb_parse_connect_string(tf_ssb_t* ssb, const char* in_broadcast, tf_ssb_broadcast_t* out_broadcast) { char public_key_str[54] = { 0 }; char secret_key_str[45] = { 0 }; @@ -3450,7 +3450,7 @@ static bool _tf_ssb_parse_connect_string(const char* in_broadcast, tf_ssb_broadc return tf_ssb_id_str_to_bin(out_broadcast->pub, public_key_str) && tf_base64_decode(secret_key_str, strlen(secret_key_str), out_broadcast->invite, sizeof(out_broadcast->invite)); } - else if (strncmp(in_broadcast, "ws:", 3) == 0) + else if (ssb->verbose && strncmp(in_broadcast, "ws:", 3) == 0) { tf_printf("Unsupported broadcast: %s\n", in_broadcast); } @@ -3460,7 +3460,7 @@ static bool _tf_ssb_parse_connect_string(const char* in_broadcast, tf_ssb_broadc void tf_ssb_connect_str(tf_ssb_t* ssb, const char* address, int connect_flags, tf_ssb_connect_callback_t* callback, void* user_data) { tf_ssb_broadcast_t broadcast = { 0 }; - if (_tf_ssb_parse_connect_string(address, &broadcast)) + if (_tf_ssb_parse_connect_string(ssb, address, &broadcast)) { if (memcmp(broadcast.invite, (uint8_t[crypto_sign_ed25519_SEEDBYTES]) { 0 }, crypto_sign_ed25519_SEEDBYTES) == 0) { @@ -3556,7 +3556,7 @@ static void _tf_ssb_add_broadcast(tf_ssb_t* ssb, const tf_ssb_broadcast_t* broad void tf_ssb_add_broadcast(tf_ssb_t* ssb, const char* connection, tf_ssb_broadcast_origin_t origin, int64_t expires_seconds) { tf_ssb_broadcast_t broadcast = { .origin = origin }; - if (_tf_ssb_parse_connect_string(connection, &broadcast)) + if (_tf_ssb_parse_connect_string(ssb, connection, &broadcast)) { _tf_ssb_add_broadcast(ssb, &broadcast, expires_seconds); } @@ -3579,7 +3579,7 @@ static void _tf_ssb_on_broadcast_listener_recv(uv_udp_t* handle, ssize_t nread, while (entry) { tf_ssb_broadcast_t broadcast = { .origin = k_tf_ssb_broadcast_origin_discovery }; - if (_tf_ssb_parse_connect_string(entry, &broadcast)) + if (_tf_ssb_parse_connect_string(ssb, entry, &broadcast)) { _tf_ssb_add_broadcast(ssb, &broadcast, k_udp_discovery_expires_seconds); }