From ca7f64297d907421b6a1735647db0856fd93908a Mon Sep 17 00:00:00 2001 From: pk910 Date: Wed, 14 Dec 2011 21:57:10 +0100 Subject: [PATCH] fixed cmd_nicklist: add users only one time to the channel userlist --- src/cmd_neonserv_nicklist.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/cmd_neonserv_nicklist.c b/src/cmd_neonserv_nicklist.c index 1a337c0..d0a7e85 100644 --- a/src/cmd_neonserv_nicklist.c +++ b/src/cmd_neonserv_nicklist.c @@ -23,7 +23,7 @@ */ static USERLIST_CALLBACK(neonserv_cmd_nicklist_userlist_lookup); static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, struct Event *event, char *nickmask, int syncusers); -static void neonserv_cmd_nicklist_synchronize_user(struct ChanNode *chan, struct UserNode *user, int access, int new); +static void neonserv_cmd_nicklist_synchronize_user(struct ChanNode *chan, struct UserNode *user, int access); struct neonserv_cmd_nicklist_cache { struct ClientSocket *client, *textclient; @@ -150,7 +150,7 @@ static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct Cli sprintf(accessbuf, "\00307%d\003", uaccess); break; } - neonserv_cmd_nicklist_synchronize_user(chan, chanuser->user, uaccess, 0); + neonserv_cmd_nicklist_synchronize_user(chan, chanuser->user, uaccess); sprintf(accessbuf, "\00309%d\003", uaccess); synced_user = 1; } else { @@ -180,7 +180,7 @@ static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct Cli sprintf(accessbuf, "\003040\003"); } if(uaccess && (chanuser->user->flags & USERFLAG_ISAUTHED)) { - neonserv_cmd_nicklist_synchronize_user(chan, chanuser->user, uaccess, 1); + neonserv_cmd_nicklist_synchronize_user(chan, chanuser->user, uaccess); sprintf(accessbuf, "\00309%d\003", uaccess); synced_user = 1; } else if(uaccess) { @@ -213,7 +213,7 @@ static void neonserv_cmd_nicklist_async1(struct ClientSocket *client, struct Cli } } -static void neonserv_cmd_nicklist_synchronize_user(struct ChanNode *chan, struct UserNode *user, int caccess, int new) { +static void neonserv_cmd_nicklist_synchronize_user(struct ChanNode *chan, struct UserNode *user, int caccess) { if(!(user->flags & USERFLAG_ISAUTHED)) return; MYSQL_RES *res; MYSQL_ROW row; @@ -226,18 +226,13 @@ static void neonserv_cmd_nicklist_synchronize_user(struct ChanNode *chan, struct printf_mysql_query("INSERT INTO `users` (`user_user`) VALUES ('%s')", escape_string(user->auth)); userid = (int) mysql_insert_id(mysql_conn); } - if(new) { - //just add + //check if already added + printf_mysql_query("SELECT `chanuser_access`, `chanuser_id`, `chanuser_seen` FROM `chanusers` WHERE `chanuser_cid` = '%d' AND `chanuser_uid` = '%d'", chan->channel_id, userid); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) != NULL) { + //clvl + if(atoi(row[0]) >= caccess) return; + printf_mysql_query("UPDATE `chanusers` SET `chanuser_access` = '%d' WHERE `chanuser_id` = '%s'", caccess, row[1]); + } else printf_mysql_query("INSERT INTO `chanusers` (`chanuser_cid`, `chanuser_uid`, `chanuser_access`) VALUES ('%d', '%d', '%d')", chan->channel_id, userid, caccess); - } else { - //check if already added - printf_mysql_query("SELECT `chanuser_access`, `chanuser_id`, `chanuser_seen` FROM `chanusers` WHERE `chanuser_cid` = '%d' AND `chanuser_uid` = '%d'", chan->channel_id, userid); - res = mysql_use(); - if ((row = mysql_fetch_row(res)) != NULL) { - //clvl - if(atoi(row[0]) >= caccess) return; - printf_mysql_query("UPDATE `chanusers` SET `chanuser_access` = '%d' WHERE `chanuser_id` = '%s'", caccess, row[1]); - } else - printf_mysql_query("INSERT INTO `chanusers` (`chanuser_cid`, `chanuser_uid`, `chanuser_access`) VALUES ('%d', '%d', '%d')", chan->channel_id, userid, caccess); - } } -- 2.20.1