userrec::userrec(InspIRCd* Instance) : ServerInstance(Instance)
{
- // the PROPER way to do it, AVOID bzero at *ALL* costs
- *password = *nick = *ident = *host = *dhost = *fullname = *awaymsg = *oper = 0;
+ *password = *nick = *ident = *host = *dhost = *fullname = *awaymsg = *oper = *uuid = 0;
server = (char*)Instance->FindServerNamePtr(Instance->Config->ServerName);
reset_due = ServerInstance->Time();
age = ServerInstance->Time(true);
void userrec::CloseSocket()
{
- shutdown(this->fd,2);
- close(this->fd);
+ ServerInstance->SE->Shutdown(this, 2);
+ ServerInstance->SE->Close(this);
}
char* userrec::GetFullHost()
if ((sendq.length()) && (this->fd != FD_MAGIC_NUMBER))
{
int old_sendq_length = sendq.length();
-#ifndef WIN32
- int n_sent = write(this->fd, this->sendq.data(), this->sendq.length());
-#else
- int n_sent = send(this->fd, (const char*)this->sendq.data(), this->sendq.length(), 0);
-#endif
+ int n_sent = ServerInstance->SE->Send(this, this->sendq.data(), this->sendq.length(), 0);
+
if (n_sent == -1)
{
if (errno == EAGAIN)
/* add a client connection to the sockets list */
void userrec::AddClient(InspIRCd* Instance, int socket, int port, bool iscached, int socketfamily, sockaddr* ip)
{
- std::string tempnick = ConvToStr(socket) + "-unknown";
+ std::string tempnick = Instance->GetUID();
+
+ Instance->Log(DEBUG,"New client has UID %s ..", tempnick.c_str());
user_hash::iterator iter = Instance->clientlist->find(tempnick);
char ipaddr[MAXBUF];
#ifdef IPV6
New = new userrec(Instance);
(*(Instance->clientlist))[tempnick] = New;
New->fd = socket;
- strlcpy(New->nick,tempnick.c_str(),NICKMAX-1);
+ strlcpy(New->nick, tempnick.c_str(), NICKMAX - 1);
+ strlcpy(New->uuid, tempnick.c_str(), UUID_LENGTH);
New->server = Instance->FindServerNamePtr(Instance->Config->ServerName);
/* We don't need range checking here, we KNOW 'unknown\0' will fit into the ident field. */
this->threshold = a->GetThreshold();
this->sendqmax = a->GetSendqMax();
this->recvqmax = a->GetRecvqMax();
+ this->MaxChans = a->GetMaxChans();
}
void userrec::FullConnect()
ServerInstance->Config->Send005(this);
+ this->WriteServ("042 %s %s :your unique ID", this->nick, this->uuid);
+
+
this->ShowMOTD();
/* Now registered */
}
}
+unsigned int userrec::GetMaxChans()
+{
+ return this->MaxChans;
+}
/* looks up a users password for their connection class (<ALLOW>/<DENY> tags)
* NOTE: If the <ALLOW> or <DENY> tag specifies an ip, and this user resolves,