diff --git a/mbtask/taskchat.c b/mbtask/taskchat.c index a68a527c..c45548ef 100644 --- a/mbtask/taskchat.c +++ b/mbtask/taskchat.c @@ -49,6 +49,7 @@ typedef enum {CH_FREE, CH_PRIVATE, CH_PUBLIC} CHANNELTYPE; typedef struct _ch_user_rec { pid_t pid; /* User's pid */ char realname[36]; /* Real name */ + char name[10]; /* Unix name */ char nick[10]; /* Nickname */ time_t connected; /* Time connected */ int channel; /* Connected channel or -1 */ @@ -425,6 +426,7 @@ char *chat_connect(char *data) chat_users[i].pid = atoi(pid); strncpy(chat_users[i].realname, realname, 36); strncpy(chat_users[i].nick, nick, 9); + strncpy(chat_users[i].name, nick, 9); chat_users[i].connected = time(NULL); chat_users[i].pointer = buffer_head; chat_users[i].channel = -1; @@ -486,8 +488,8 @@ char *chat_close(char *data) * Remove from IBC network */ #ifdef USE_EXPERIMENT - del_user(&users, CFG.myfqdn, chat_users[i].nick); - send_all("QUIT %s@%s Leaving chat\r\n", chat_users[i].nick, CFG.myfqdn); + del_user(&users, CFG.myfqdn, chat_users[i].name); + send_all("QUIT %s@%s Leaving chat\r\n", chat_users[i].name, CFG.myfqdn); #endif Syslog('-', "Closing chat for pid %s, slot %d", pid, i); memset(&chat_users[i], 0, sizeof(_chat_users)); @@ -631,6 +633,8 @@ char *chat_put(char *data) strncpy(chat_users[i].nick, cmd, 9); sprintf(buf, "Nick set to \"%s\"", cmd); system_msg(chat_users[i].pid, buf); + send_all("NICK %s %s %s %s\r\n", chat_users[i].nick, chat_users[i].name, + CFG.myfqdn, chat_users[i].realname); chat_dump(); goto ack; } diff --git a/mbtask/taskibc.c b/mbtask/taskibc.c index 54907cc9..35025afd 100644 --- a/mbtask/taskibc.c +++ b/mbtask/taskibc.c @@ -165,12 +165,8 @@ void dump_ncslist(void) Syslog('+', "IBC: Server User Name/Nick Channel Cop Connect time"); Syslog('+', "IBC: -------------------- -------------------- --------- ------------- --- --------------------"); for (usrp = users; usrp; usrp = usrp->next) { - if (strlen(usrp->nick)) - Syslog('+', "IBC: %-20s %-20s %-9s %-13s %s %s", usrp->server, usrp->realname, usrp->nick, usrp->channel, - usrp->chanop ? "yes":"no ", rfcdate(usrp->connected)); - else - Syslog('+', "IBC: %-20s %-20s %-9s %-13s %s %s", usrp->server, usrp->realname, usrp->name, usrp->channel, - usrp->chanop ? "yes":"no ", rfcdate(usrp->connected)); + Syslog('+', "IBC: %-20s %-20s %-9s %-13s %s %s", usrp->server, usrp->realname, usrp->nick, usrp->channel, + usrp->chanop ? "yes":"no ", rfcdate(usrp->connected)); } } @@ -222,6 +218,7 @@ int add_user(usr_list **fap, char *server, char *name, char *realname) tmp->next = NULL; strncpy(tmp->server, server, 63); strncpy(tmp->name, name, 9); + strncpy(tmp->nick, name, 9); strncpy(tmp->realname, realname, 36); tmp->connected = now; @@ -950,7 +947,7 @@ int command_nick(char *hostname, char *parameters) found = FALSE; for (tmp = users; tmp; tmp = tmp->next) { - if (strcmp(tmp->nick, nick) == 0) { + if ((strcmp(tmp->name, nick) == 0) || (strcmp(tmp->nick, nick) == 0)) { found = TRUE; break; } @@ -963,7 +960,7 @@ int command_nick(char *hostname, char *parameters) for (tmp = users; tmp; tmp = tmp->next) { if ((strcmp(tmp->server, server) == 0) && (strcmp(tmp->realname, realname) == 0) && (strcmp(tmp->name, name) == 0)) { pthread_mutex_lock(&b_mutex); - sprintf(tmp->nick, "%s", nick); + strncpy(tmp->nick, nick, 9); pthread_mutex_unlock(&b_mutex); found = TRUE; Syslog('+', "IBC: user %s set nick to %s", name, nick);