projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Watcher list support added.
[silc.git]
/
apps
/
silcd
/
idlist.c
diff --git
a/apps/silcd/idlist.c
b/apps/silcd/idlist.c
index ab8f7d53af5abb6b9b0773020d25001fb2e4526d..211d59eb0bae2a81d999fd65e19258b6d74e2a07 100644
(file)
--- a/
apps/silcd/idlist.c
+++ b/
apps/silcd/idlist.c
@@
-21,6
+21,7
@@
#include "serverincludes.h"
#include "idlist.h"
#include "serverincludes.h"
#include "idlist.h"
+#include "server_internal.h"
/******************************************************************************
/******************************************************************************
@@
-420,10
+421,13
@@
int silc_idlist_get_clients_by_hash(SilcIDList id_list, char *nickname,
SilcIDCacheEntry id_cache = NULL;
unsigned char hash[32];
SilcClientID client_id;
SilcIDCacheEntry id_cache = NULL;
unsigned char hash[32];
SilcClientID client_id;
+ char nick[128 + 1];
SILC_LOG_DEBUG(("Start"));
SILC_LOG_DEBUG(("Start"));
- silc_hash_make(md5hash, nickname, strlen(nickname), hash);
+ memset(nick, 0, sizeof(nick));
+ silc_to_lower(nickname, nick, sizeof(nick) - 1);
+ silc_hash_make(md5hash, nick, strlen(nick), hash);
/* As the Client ID is hashed in the ID cache by hashing only the hash
from the Client ID, we can do a lookup with only the hash not the
/* As the Client ID is hashed in the ID cache by hashing only the hash
from the Client ID, we can do a lookup with only the hash not the
@@
-493,7
+497,8
@@
silc_idlist_find_client_by_id(SilcIDList id_list, SilcClientID *id,
/* Replaces old Client ID with new one */
SilcClientEntry
/* Replaces old Client ID with new one */
SilcClientEntry
-silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id,
+silc_idlist_replace_client_id(SilcServer server,
+ SilcIDList id_list, SilcClientID *old_id,
SilcClientID *new_id, const char *nickname)
{
SilcIDCacheEntry id_cache = NULL;
SilcClientID *new_id, const char *nickname)
{
SilcIDCacheEntry id_cache = NULL;
@@
-521,6
+526,11
@@
silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id,
if (!silc_idcache_del_by_context(id_list->clients, client))
return NULL;
if (!silc_idcache_del_by_context(id_list->clients, client))
return NULL;
+ /* Check if anyone is watching this nickname */
+ if (server->server_type == SILC_ROUTER)
+ silc_server_check_watcher_list(server, client, nickname,
+ SILC_NOTIFY_TYPE_NICK_CHANGE);
+
silc_free(client->id);
silc_free(client->nickname);
client->id = new_id;
silc_free(client->id);
silc_free(client->nickname);
client->id = new_id;