- if ((TIME > curr->timeout) && (curr->registered != REG_ALL))
- {
- curr->muted = true;
- User::QuitUser(this, curr, "Registration timeout");
- continue;
- }
- else
- {
- if ((curr->registered != REG_ALL) && (next_call > (time_t)curr->timeout))
- next_call = curr->timeout;
- }
- /*
- * user has signed on with USER/NICK/PASS, and dns has completed, all the modules
- * say this user is ok to proceed, fully connect them.
- */
- bool ready = AllModulesReportReady(curr);
- if ((TIME > curr->signon) && (curr->registered == REG_NICKUSER) && (ready))
- {
- if (!curr->dns_done)
- {
- curr->WriteServ("NOTICE Auth :*** Could not resolve your hostname: Request timed out; using your IP address (%s) instead.", curr->GetIPString());
- curr->dns_done = true;
- }
- this->stats->statsDnsBad++;
- curr->FullConnect();
- continue;
- }
- else
- {
- if ((curr->registered == REG_NICKUSER) && (ready) && (next_call > curr->signon))
- next_call = curr->signon;
- }
-
- if ((curr->dns_done) && (curr->registered == REG_NICKUSER) && (ready))
- {
- curr->FullConnect();
- continue;
- }
- else
- {
- if ((curr->registered == REG_NICKUSER) && (ready) && (next_call > curr->signon + this->Config->dns_timeout))
- next_call = curr->signon + this->Config->dns_timeout;
- }
-
- // It's time to PING this user. Send them a ping.
- if ((TIME > curr->nping) && (curr->registered == REG_ALL))
- {
- // This user didn't answer the last ping, remove them
- if (!curr->lastping)
- {
- /* Everybody loves boobies. */
- time_t time = this->Time(false) - (curr->nping - curr->pingmax);
- char message[MAXBUF];
- snprintf(message, MAXBUF, "Ping timeout: %ld second%s", (long)time, time > 1 ? "s" : "");
- curr->muted = true;
- curr->lastping = 1;
- curr->nping = TIME+curr->pingmax;
- User::QuitUser(this, curr, message);
- continue;
- }
- curr->Write("PING :%s",this->Config->ServerName);
- curr->lastping = 0;
- curr->nping = TIME+curr->pingmax;
- }
- else
- {
- if ((curr->registered == REG_ALL) && (next_call > curr->nping))
- next_call = curr->nping;
- }
- }
-
- /* If theres nothing to do, trigger in the next second, something might come up */
- time_t delta = next_call - TIME;
- if (delta == DUMMY_VALUE)
- {
- next_call = TIME + 1;
- delta = 1;