return true;
}
+bool userrec::HasMode(unsigned char m)
+{
+ return (modes[m-65]);
+}
+
+const char* userrec::FormatModes()
+{
+ static char data[MAXBUF];
+ int offset = 0;
+ for (int n = 0; n < 64; n++)
+ {
+ if (modes[n])
+ data[offset++] = n+65;
+ }
+ data[offset] = 0;
+ return data;
+}
+
userrec::userrec()
{
// the PROPER way to do it, AVOID bzero at *ALL* costs
- *password = *nick = *ident = *host = *dhost = *fullname = *modes = *awaymsg = *oper = 0;
+ *password = *nick = *ident = *host = *dhost = *fullname = *awaymsg = *oper = 0;
server = (char*)FindServerNamePtr(Config->ServerName);
reset_due = TIME;
lines_in = fd = lastping = signon = idle_lastmsg = nping = registered = 0;
- modebits = timeout = flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
+ timeout = flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
haspassed = dns_done = false;
recvq = "";
sendq = "";
chans.clear();
invites.clear();
chans.resize(MAXCHANS);
+ memset(modes,0,sizeof(modes));
for (unsigned int n = 0; n < MAXCHANS; n++)
{
int n_sent = write(this->fd,tb,this->sendq.length());
if (n_sent == -1)
{
- this->SetWriteError(strerror(errno));
+ if (errno != EAGAIN)
+ this->SetWriteError(strerror(errno));
}
else
{
char reason[MAXBUF];
strlcpy(reason,r,MAXQUIT-1);
- log(DEBUG,"kill_link: %s '%s'",user->nick,reason);
+ log(DEBUG,"kill_link: %s %d '%s'",user->nick,user->fd,reason);
if (IS_LOCAL(user))
Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);
return;
}
- r = matches_kline(user->host);
+ r = matches_kline(match_against);
if (r)
{