client_entry->username, client_entry->hostname);
signal_emit("message join", 4, server, channel->channel_name,
client_entry->nickname,
- client_entry->username == NULL ? "" : buf);
+ !client_entry->username[0] ? "" : buf);
/* If there are multiple same nicknames on channel now, tell it to user. */
if (client_entry != server->conn->local_entry) {
char nick[128 + 1], tmp[32];
+ int count = 0;
silc_parse_userfqdn(client_entry->nickname, nick, sizeof(nick), NULL, 0);
- clients = silc_client_get_clients_local(client, conn, nick, NULL);
+ clients = silc_client_get_clients_local(client, conn, nick, TRUE);
if (!clients || silc_dlist_count(clients) < 2) {
silc_client_list_free(client, conn, clients);
break;
}
- silc_snprintf(tmp, sizeof(tmp), "%d", silc_dlist_count(clients));
- printformat_module("fe-common/silc", server, NULL,
- MSGLEVEL_CRAP, SILCTXT_CHANNEL_MANY_NICKS,
- tmp, nick);
- printformat_module("fe-common/silc", server, NULL,
- MSGLEVEL_CRAP, SILCTXT_CHANNEL_USER_APPEARS,
- buf, client_entry->nickname);
+ silc_dlist_start(clients);
+ while ((client_entry2 = silc_dlist_get(clients)))
+ if (silc_client_on_channel(channel, client_entry2))
+ count++;
+ if (count > 1) {
+ silc_snprintf(tmp, sizeof(tmp), "%d", silc_dlist_count(clients));
+ printformat_module("fe-common/silc", server, channel->channel_name,
+ MSGLEVEL_CRAP, SILCTXT_CHANNEL_MANY_NICKS,
+ tmp, nick);
+ printformat_module("fe-common/silc", server, channel->channel_name,
+ MSGLEVEL_CRAP, SILCTXT_CHANNEL_USER_APPEARS,
+ buf, client_entry->nickname);
+ }
silc_client_list_free(client, conn, clients);
}
break;
if (!pw) {
if (completion)
completion(FALSE, context);
+ silc_free(pk);
return;
}
format, 0, verify);
g_free(format);
silc_free(fingerprint);
+ silc_free(babbleprint);
+ silc_free(pk);
return;
} else {
/* The key already exists, verify it. */
format, 0, verify);
g_free(format);
silc_free(fingerprint);
+ silc_free(babbleprint);
+ silc_free(pk);
return;
}
format, 0, verify);
g_free(format);
silc_free(fingerprint);
+ silc_free(babbleprint);
+ silc_free(pk);
return;
}
+ silc_pkcs_public_key_free(local_pubkey);
/* Compare the keys */
if (memcmp(encpk, pk, encpk_len)) {
format, 0, verify);
g_free(format);
silc_free(fingerprint);
+ silc_free(babbleprint);
silc_free(encpk);
+ silc_free(pk);
return;
}
completion(TRUE, context);
silc_free(encpk);
silc_free(fingerprint);
+ silc_free(babbleprint);
silc_free(verify->filename);
silc_free(verify->entity);
silc_free(verify->entity_name);
silc_free(verify);
+ silc_free(pk);
}
}