Don't connect to ourselves or duplicates.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3641 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
Cory McWilliams 2021-01-14 02:45:10 +00:00
parent cf195cdd44
commit cbc21cfbe6

View File

@ -1700,6 +1700,20 @@ static void _tf_on_connect_getaddrinfo(uv_getaddrinfo_t* addrinfo, int result, s
void tf_ssb_connect(tf_ssb_t* ssb, const char* host, int port, const uint8_t* key) void tf_ssb_connect(tf_ssb_t* ssb, const char* host, int port, const uint8_t* key)
{ {
for (tf_ssb_connection_t* connection = ssb->connections; connection; connection = connection->next) {
if (memcmp(connection->serverpub, key, k_id_bin_len) == 0) {
char id[k_id_base64_len];
tf_ssb_id_bin_to_str(id, sizeof(id), key);
printf("Not connecting to %s:%d, because we are already connected to %s.", host, port, key);
return;
} else if (memcmp(key, ssb->pub, k_id_bin_len) == 0) {
char id[k_id_base64_len];
tf_ssb_id_bin_to_str(id, sizeof(id), key);
printf("Not connecting to %s:%d, because they appear to be ourselves %s.", host, port, key);
return;
}
}
connect_t* connect = malloc(sizeof(connect_t)); connect_t* connect = malloc(sizeof(connect_t));
*connect = (connect_t) { *connect = (connect_t) {
.ssb = ssb, .ssb = ssb,