static void neonserv_cmd_myaccess_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nick, char *auth, char *chanmatch) {
//we've got a valid auth now...
- MYSQL_RES *res;
- MYSQL_ROW user_row, chanuser_row;
+ MYSQL_RES *res, *default_res;
+ MYSQL_ROW user_row, chanuser_row, default_chan = NULL;
char flagBuf[5];
int userid, cflags, caccess, flagPos;
int i, total_count, match_count = 0, owner_count = 0;
if(!strcmp(chanuser_row[0], "500")) owner_count++;
if(chanmatch && match(chanmatch, chanuser_row[0])) continue;
match_count++;
+ if((!chanuser_row[4] || !chanuser_row[5]) && !default_chan) {
+ printf_mysql_query("SELECT `channel_getop`, `channel_getvoice` FROM `channels` WHERE `channel_name` = 'defaults'");
+ default_res = mysql_use();
+ default_chan = mysql_fetch_row(default_res);
+ }
flagPos = 0;
content[0] = chanuser_row[3];
content[1] = chanuser_row[0];
caccess = atoi(chanuser_row[0]);
if((cflags & DB_CHANUSER_SUSPENDED))
flagPos += sprintf(flagBuf + flagPos, "s");
- if(caccess >= atoi(chanuser_row[4]))
+ if(caccess >= (chanuser_row[4] ? atoi(chanuser_row[4]) : atoi(default_chan[0])))
flagPos += sprintf(flagBuf + flagPos, "o");
- if(caccess >= atoi(chanuser_row[5]))
+ if(caccess >= (chanuser_row[5] ? atoi(chanuser_row[5]) : atoi(default_chan[1])))
flagPos += sprintf(flagBuf + flagPos, "v");
if((cflags & DB_CHANUSER_AUTOINVITE))
flagPos += sprintf(flagBuf + flagPos, "i");