Client_Init( void )
{
struct hostent *h;
-
+
This_Server = New_Client_Struct( );
if( ! This_Server )
{
Client_SetInfo( This_Server, Conf_ServerInfo );
My_Clients = This_Server;
-
+
memset( &My_Whowas, 0, sizeof( My_Whowas ));
} /* Client_Init */
if( NGIRCd_SignalRestart ) Client_Destroy( This_Server, "Server going down (restarting).", NULL, false );
else Client_Destroy( This_Server, "Server going down.", NULL, false );
-
+
cnt = 0;
c = My_Clients;
while(c) {
Generate_MyToken(client);
if (Client_HasMode(client, 'a'))
- client->away = strndup(DEFAULT_AWAY_MSG, CLIENT_AWAY_LEN - 1);
+ client->away = strdup(DEFAULT_AWAY_MSG);
client->next = (POINTER *)My_Clients;
My_Clients = client;
Client_Destroy( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit )
{
/* remove a client */
-
+
CLIENT *last, *c;
char msg[COMMAND_LEN];
const char *txt;
assert(Client != NULL);
assert(Hostname != NULL);
- if (Conf_CloakHost[0]) {
+ /* Only cloak the hostmask if it has not yet been cloaked.
+ * The period or colon indicates it's still an IP address.
+ * An empty string means a rDNS lookup did not happen (yet). */
+ if (Conf_CloakHost[0] && (!Client->host[0] || strchr(Client->host, '.')
+ || strchr(Client->host, ':'))) {
char cloak[GETID_LEN];
strlcpy(cloak, Hostname, GETID_LEN);
{
assert( Client != NULL );
assert( ID != NULL );
-
+
strlcpy( Client->id, ID, sizeof( Client->id ));
if (Conf_CloakUserToNick) {
/**
- * Get client structure ("introducer") identfied by a server token.
+ * Get client structure ("introducer") identified by a server token.
* @return CLIENT structure or NULL if none could be found.
*/
GLOBAL CLIENT *
{
assert( Client != NULL );
-#ifdef DEBUG
if(Client->type == CLIENT_USER)
assert(strlen(Client->id) < Conf_MaxNickLength);
-#endif
-
+
if( Client->id[0] ) return Client->id;
else return "*";
} /* Client_ID */
GLOBAL void
Client_Introduce(CLIENT *From, CLIENT *Client, int Type)
{
+ int server;
+
/* Set client type (user or service) */
Client_SetType(Client, Type);
if (From) {
- if (Conf_NickIsService(Conf_GetServer(Client_Conn(From)),
- Client_ID(Client)))
+ server = Conf_GetServer(Client_Conn(From));
+ if (server > NONE && Conf_NickIsService(server, Client_ID(Client)))
Client_SetType(Client, CLIENT_SERVICE);
LogDebug("%s \"%s\" (+%s) registered (via %s, on %s, %d hop%s).",
Client_TypeText(Client), Client_Mask(Client),
/**
- * Allocate and initialize new CLIENT strcuture.
+ * Allocate and initialize new CLIENT structure.
*
* @return Pointer to CLIENT structure or NULL on error.
*/
slot = Last_Whowas + 1;
if( slot >= MAX_WHOWAS || slot < 0 ) slot = 0;
-#ifdef DEBUG
- Log( LOG_DEBUG, "Saving WHOWAS information to slot %d ...", slot );
-#endif
+ LogDebug( "Saving WHOWAS information to slot %d ...", slot );
My_Whowas[slot].time = now;
strlcpy( My_Whowas[slot].id, Client_ID( Client ),
} /* Client_Announce */
-#ifdef DEBUG
GLOBAL void
Client_DebugDump(void)
{
CLIENT *c;
- Log(LOG_DEBUG, "Client status:");
+ LogDebug("Client status:");
c = My_Clients;
while (c) {
- Log(LOG_DEBUG,
+ LogDebug(
" - %s: type=%d, host=%s, user=%s, conn=%d, start=%ld, flags=%s",
Client_ID(c), Client_Type(c), Client_Hostname(c),
Client_User(c), Client_Conn(c), Client_StartTime(c),
}
} /* Client_DumpClients */
-#endif
/* -eof- */