client = New_Client_Struct( );
if( ! client ) return NULL;
- /* Initialisieren */
client->starttime = time(NULL);
client->conn_id = Idx;
client->introducer = Introducer;
if( strchr( client->modes, 'a' ))
strlcpy( client->away, DEFAULT_AWAY_MSG, sizeof( client->away ));
- /* Verketten */
client->next = (POINTER *)My_Clients;
My_Clients = client;
- /* Adjust counters */
Adjust_Counters( client );
return client;
GLOBAL void
Client_Destroy( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit )
{
- /* Client entfernen. */
+ /* remove a client */
CLIENT *last, *c;
char msg[LINE_LEN];
else txt = FwdMsg;
if( ! txt ) txt = "Reason unknown.";
- /* Netz-Split-Nachricht vorbereiten (noch nicht optimal) */
+ /* netsplit message */
if( Client->type == CLIENT_SERVER ) {
strlcpy(msg, This_Server->id, sizeof (msg));
strlcat(msg, " ", sizeof (msg));
{
if(( Client->type == CLIENT_SERVER ) && ( c->introducer == Client ) && ( c != Client ))
{
- /* der Client, der geloescht wird ist ein Server. Der Client, den wir gerade
- * pruefen, ist ein Child von diesem und muss daher auch entfernt werden */
+ /*
+ * The client that is about to be removed is a server,
+ * the client we are checking right now is a child of that
+ * server and thus has to be removed, too.
+ *
+ * Call Client_Destroy() recursively with the server as the
+ * new "object to be removed". This starts the cycle again, until
+ * all servers that are linked via the original server have been
+ * removed.
+ */
Client_Destroy( c, NULL, msg, false );
last = NULL;
c = My_Clients;
}
if( c == Client )
{
- /* Wir haben den Client gefunden: entfernen */
+ /* found the client: remove it */
if( last ) last->next = c->next;
else My_Clients = (CLIENT *)c->next;
else Log( LOG_NOTICE|LOG_snotice, "Server \"%s\" unregistered: %s", c->id, txt );
}
- /* andere Server informieren */
+ /* inform other servers */
if( ! NGIRCd_SignalQuit )
{
if( FwdMsg ) IRC_WriteStrServersPrefix( Client_NextHop( c ), c, "SQUIT %s :%s", c->id, FwdMsg );
assert( Client->conn_id > NONE );
assert( ID != NULL );
- /* Nick too long? */
+ /* ID too long? */
if (strlen(ID) > CLIENT_ID_LEN) {
IRC_WriteStrClient(Client, ERR_ERRONEUSNICKNAME_MSG, Client_ID(Client), ID);
return false;
}
- /* does ID already exist? */
+ /* ID already in use? */
c = My_Clients;
while (c) {
if (strcasecmp(c->id, ID) == 0) {
snprintf(str, sizeof(str), "ID \"%s\" already registered", ID);
- if (Client->conn_id != c->conn_id)
+ if (c->conn_id != NONE)
Log(LOG_ERR, "%s (on connection %d)!", str, c->conn_id);
else
Log(LOG_ERR, "%s (via network)!", str);