From a31562f51933cc9d217d45a7048e5f80cd335cbd Mon Sep 17 00:00:00 2001 From: nohar Date: Sat, 27 Jan 2007 12:30:12 +0000 Subject: [PATCH] Bug fix in nick channel nick tracking --- src/irc.c | 24 ++++++++++++------------ src/util.c | 10 +++++++++- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/irc.c b/src/irc.c index 53d6a3b..2acc377 100644 --- a/src/irc.c +++ b/src/irc.c @@ -1718,18 +1718,6 @@ static int irc_nick(struct link_server *server, struct line *line) if (!line->origin) return ERR_PROTOCOL; - if (origin_is_me(line, server)) { - free(server->nick); - server->nick = strdup(line->elemv[1]); - if (LINK(server)->follow_nick && - (LINK(server)->away_nick == NULL || - strcmp(server->nick, LINK(server)->away_nick)) - != 0) { - free(LINK(server)->connect_nick); - LINK(server)->connect_nick = strdup(server->nick); - } - } - for (hash_it_init(&server->channels, &hi); hash_it_item(&hi); hash_it_next(&hi)) { channel = hash_it_item(&hi); @@ -1744,6 +1732,18 @@ static int irc_nick(struct link_server *server, struct line *line) line->elemv[1]); } + if (origin_is_me(line, server)) { + free(server->nick); + server->nick = strdup(line->elemv[1]); + if (LINK(server)->follow_nick && + (LINK(server)->away_nick == NULL || + strcmp(server->nick, LINK(server)->away_nick)) + != 0) { + free(LINK(server)->connect_nick); + LINK(server)->connect_nick = strdup(server->nick); + } + } + return OK_COPY; } diff --git a/src/util.c b/src/util.c index 5895cda..edf706f 100644 --- a/src/util.c +++ b/src/util.c @@ -553,12 +553,20 @@ char *hash_it_key(hash_iterator_t *h) return hi->key; } +void hash_dump(hash_t *h) +{ + hash_iterator_t it; + for (hash_it_init(h, &it); hash_it_item(&it) ;hash_it_next(&it)) { + void *p = hash_it_item(&it); + printf("%s => %p\n", hash_it_key(&it), hash_it_item(&it)); + } +} + char *strmaydup(char *s) { if (!s) return s; return strdup(s); - } void strucase(char *s)