Try to clean up some websocket noise, and try harder to not duplicate connections.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3647 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2021-01-20 02:01:14 +00:00
parent 3487f335e5
commit 03cf347394
2 changed files with 28 additions and 4 deletions

View File

@ -794,6 +794,18 @@ bool tf_ssb_connection_get_id(tf_ssb_connection_t* connection, char* out_id, siz
return tf_ssb_id_bin_to_str(out_id, out_id_size, connection->serverpub);
}
static bool _tf_ssb_is_already_connected(tf_ssb_t* ssb, uint8_t* id)
{
for (tf_ssb_connection_t* connection = ssb->connections; connection; connection = connection->next) {
if (memcmp(connection->serverpub, id, k_id_bin_len) == 0) {
return true;
} else if (memcmp(ssb->pub, id, k_id_bin_len) == 0) {
return true;
}
}
return false;
}
static void _tf_ssb_connection_verify_client_identity(tf_ssb_connection_t* connection, const uint8_t* message, size_t len)
{
uint8_t nonce[crypto_secretbox_NONCEBYTES] = { 0 };
@ -859,6 +871,11 @@ static void _tf_ssb_connection_verify_client_identity(tf_ssb_connection_t* conne
}
uint8_t* detached_signature_A = m;
if (_tf_ssb_is_already_connected(connection->ssb, m + 64)) {
_tf_ssb_connection_close(connection, "already connected");
return;
}
memcpy(connection->serverpub, m + 64, sizeof(connection->serverpub));
uint8_t hash3[crypto_hash_sha256_BYTES];