vsnprintf(textbuffer, MAXBUF, text, argsPtr);
va_end(argsPtr);
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (otheruser->fd != FD_MAGIC_NUMBER)
WriteTo_NoFormat(user,otheruser,textbuffer);
log(DEFAULT,"*** BUG *** WriteChannel was given an invalid parameter");
return;
}
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (otheruser->fd != FD_MAGIC_NUMBER)
WriteTo_NoFormat(user,otheruser,text);
vsnprintf(textbuffer, MAXBUF, text, argsPtr);
va_end(argsPtr);
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((otheruser->fd != FD_MAGIC_NUMBER) && (otheruser != user))
{
log(DEFAULT,"*** BUG *** WriteChannel was given an invalid parameter");
return;
}
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((otheruser->fd != FD_MAGIC_NUMBER) && (otheruser != user))
{
va_end(argsPtr);
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (IS_LOCAL(otheruser))
WriteServ_NoFormat(otheruser->fd,textbuffer);
log(DEFAULT,"*** BUG *** WriteChannelWithServ was given an invalid parameter");
return;
}
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (IS_LOCAL(otheruser))
WriteServ_NoFormat(otheruser->fd,text);
vsnprintf(textbuffer, MAXBUF, text, argsPtr);
va_end(argsPtr);
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((IS_LOCAL(otheruser)) && (user != otheruser))
WriteFrom_NoFormat(otheruser->fd,user,textbuffer);
log(DEFAULT,"*** BUG *** ChanExceptSender was given an invalid parameter");
return;
}
- std::vector<char*> *ulist = Ptr->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= Ptr->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((IS_LOCAL(otheruser)) && (user != otheruser))
WriteFrom_NoFormat(otheruser->fd,user,text);
{
if (u->chans[i].channel)
{
- std::vector<char*> *ulist = u->chans[i].channel->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= u->chans[i].channel->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((otheruser->fd > -1) && (!already_sent[otheruser->fd]))
{
{
if (u->chans[i].channel)
{
- std::vector<char*> *ulist = u->chans[i].channel->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= u->chans[i].channel->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((otheruser->fd > -1) && (!already_sent[otheruser->fd]))
{
{
if (u->chans[i].channel)
{
- std::vector<char*> *ulist = u->chans[i].channel->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= u->chans[i].channel->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (u != otheruser)
{
{
if (u->chans[i].channel)
{
- std::vector<char*> *ulist = u->chans[i].channel->GetUsers();
- unsigned int x = ulist->size();
- for (unsigned int j = 0; j < x; j++)
+ std::map<char*,char*> *ulist= u->chans[i].channel->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[j];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (u != otheruser)
{
snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
- std::vector<char*> *ulist = c->GetUsers();
- for (unsigned int i = 0; i < ulist->size(); i++)
+ std::map<char*,char*> *ulist= c->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[i];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if ((!has_channel(user,c)) && (strchr(otheruser->modes,'i')))
{
uslen = sizeof(sock_us);
length = sizeof(client);
incomingSockfd = accept (activefds[activefd],(struct sockaddr*)&client,&length);
- if (!getsockname(incomingSockfd,(sockaddr*)&sock_us,&uslen))
+
+ if ((incomingSockfd > -1) && (!getsockname(incomingSockfd,(sockaddr*)&sock_us,&uslen)))
{
in_port = ntohs(sock_us.sin_port);
log(DEBUG,"Accepted socket %d",incomingSockfd);
* using gethostbyaddr(). That is sucky and we
* don't do that any more...
*/
- if (incomingSockfd >= 0)
+ NonBlocking(incomingSockfd);
+ if (Config->GetIOHook(in_port))
{
- NonBlocking(incomingSockfd);
- if (Config->GetIOHook(in_port))
- {
- Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, target, in_port);
- }
- stats->statsAccept++;
- AddClient(incomingSockfd, target, in_port, false, target);
- log(DEBUG,"Adding client on port %lu fd=%lu",(unsigned long)in_port,(unsigned long)incomingSockfd);
- }
- else
- {
- WriteOpers("*** WARNING: accept() failed on port %lu (%s)",(unsigned long)in_port,target);
- log(DEBUG,"accept failed: %lu",(unsigned long)in_port);
- stats->statsRefused++;
+ Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, target, in_port);
}
+ stats->statsAccept++;
+ AddClient(incomingSockfd, target, in_port, false, target);
+ log(DEBUG,"Adding client on port %lu fd=%lu",(unsigned long)in_port,(unsigned long)incomingSockfd);
}
else
{
- log(DEBUG,"Couldnt look up the port number for fd %lu (OS BROKEN?!)",incomingSockfd);
+ log(DEBUG,"Accept failed on fd %lu: %s",(unsigned long)incomingSockfd,strerror(errno));
shutdown(incomingSockfd,2);
close(incomingSockfd);
+ stats->statsRefused++;
}
break;
log(DEBUG,"Sending FJOINs to other server for %s",c->name);
char list[MAXBUF];
snprintf(list,MAXBUF,":%s FJOIN %s %lu",Srv->GetServerName().c_str(),c->name,(unsigned long)c->age);
- std::vector<char*> *ulist = c->GetUsers();
- for (unsigned int i = 0; i < ulist->size(); i++)
+ std::map<char*,char*> *ulist = c->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[i];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
strlcat(list," ",MAXBUF);
strlcat(list,cmode(otheruser,c),MAXBUF);
// returns a list of DIRECT servernames for a specific channel
void GetListOfServersForChannel(chanrec* c, std::deque<TreeServer*> &list)
{
- std::vector<char*> *ulist = c->GetUsers();
- unsigned int ucount = ulist->size();
- for (unsigned int i = 0; i < ucount; i++)
+ std::map<char*,char*> *ulist = c->GetUsers();
+ for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
- char* o = (*ulist)[i];
+ char* o = i->second;
userrec* otheruser = (userrec*)o;
if (otheruser->fd < 0)
{