*/
unsigned int unregistered_count;
+ /** The number of users on U-lined servers. */
+ unsigned int uline_count;
+
/** Perform background user events for all local users such as PING checks, registration timeouts,
* penalty management and recvq processing for users who have data in their recvq due to throttling.
*/
/** Return a count of fully registered connections on the network
* @return The number of registered users on the network
*/
- unsigned int RegisteredUserCount() { return this->clientlist.size() - this->UnregisteredUserCount(); }
+ unsigned int RegisteredUserCount() { return this->clientlist.size() - this->UnregisteredUserCount() - this->ULineCount(); }
/** Return a count of opered (umode +o) users on the network
* @return The number of opers on the network
*/
unsigned int UnregisteredUserCount() const { return this->unregistered_count; }
+ /** Return a count of users on a u-lined servers.
+ * @return The number of users on u-lined servers.
+ */
+ unsigned int ULineCount() const { return this->uline_count; }
+
/** Return a count of local registered users
* @return The number of registered local users
*/
ServerInstance->Logs->Log("USERS", LOG_DEBUG, "New UUID for user: %s", uuid.c_str());
+ if (srv->IsULine())
+ ServerInstance->Users->uline_count++;
+
// Do not insert FakeUsers into the uuidlist so FindUUID() won't return them which is the desired behavior
if (type != USERTYPE_SERVER)
{
if (client_sa.family() != AF_UNSPEC)
ServerInstance->Users->RemoveCloneCounts(this);
+ if (server->IsULine() && ServerInstance->Users->uline_count)
+ ServerInstance->Users->uline_count--;
+
return Extensible::cull();
}