/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
} /* Client_SetFlags */
- GLOBAL void
- Client_SetPassword( CLIENT *Client, const char *Pwd )
- {
- /* set password sent by client */
-
- assert( Client != NULL );
- assert( Pwd != NULL );
-
- strlcpy(Client->pwd, Pwd, sizeof(Client->pwd));
- } /* Client_SetPassword */
-
-
GLOBAL void
Client_SetAway( CLIENT *Client, const char *Txt )
{
} /* Client_HostnameCloaked */
- GLOBAL char *
- Client_Password( CLIENT *Client )
- {
- assert( Client != NULL );
- return Client->pwd;
- } /* Client_Password */
-
-
GLOBAL char *
Client_Modes( CLIENT *Client )
{
return false;
}
+ if (Client_Type(Client) != CLIENT_SERVER
+ && Client_Type(Client) != CLIENT_SERVICE) {
+ /* Make sure that this isn't a restricted/forbidden nick name */
+ if (Conf_NickIsBlocked(Nick)) {
+ IRC_WriteStrClient(Client, ERR_FORBIDDENNICKNAME_MSG,
+ Client_ID(Client), Nick);
+ return false;
+ }
+ }
+
/* Nickname already registered? */
if (Client_Search(Nick)) {
IRC_WriteStrClient(Client, ERR_NICKNAMEINUSE_MSG,
Client_SetType(Client, Type);
if (From) {
- if (Conf_IsService(Conf_GetServer(Client_Conn(From)),
+ if (Conf_NickIsService(Conf_GetServer(Client_Conn(From)),
Client_ID(Client)))
Client_SetType(Client, CLIENT_SERVICE);
LogDebug("%s \"%s\" (+%s) registered (via %s, on %s, %d hop%s).",
return ok;
} /* Conn_WriteStr */
+ GLOBAL char*
+ Conn_Password( CONN_ID Idx )
+ {
+ assert( Idx > NONE );
+ if (My_Connections[Idx].pwd == NULL)
+ return (char*)"\0";
+ else
+ return My_Connections[Idx].pwd;
+ } /* Conn_Password */
+
+ GLOBAL void
+ Conn_SetPassword( CONN_ID Idx, const char *Pwd )
+ {
+ assert( Idx > NONE );
+
+ if (My_Connections[Idx].pwd)
+ free(My_Connections[Idx].pwd);
+
+ My_Connections[Idx].pwd = strdup(Pwd);
+ if (My_Connections[Idx].pwd == NULL) {
+ Log(LOG_EMERG, "Can't allocate memory! [Conn_SetPassword]");
+ exit(1);
+ }
+ } /* Conn_SetPassword */
/**
* Append Data to the outbound write buffer of a connection.
array_free(&My_Connections[Idx].rbuf);
array_free(&My_Connections[Idx].wbuf);
+ if (My_Connections[Idx].pwd != NULL)
+ free(My_Connections[Idx].pwd);
/* Clean up connection structure (=free it) */
Init_Conn_Struct( Idx );
if (My_Connections[i].lastping <
time(NULL) - Conf_PongTimeout) {
/* Timeout */
- LogDebug
- ("Connection %d: Ping timeout: %d seconds.",
- i, Conf_PongTimeout);
- snprintf(msg, sizeof(msg), "Ping timeout: %d seconds", Conf_PongTimeout);
+ snprintf(msg, sizeof(msg),
+ "Ping timeout: %d seconds",
+ Conf_PongTimeout);
+ LogDebug("Connection %d: %s.", i, msg);
Conn_Close(i, NULL, msg, true);
}
} else if (My_Connections[i].lastdata <