/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2012 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
*
* 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
{
cnt++;
next = (CLIENT *)c->next;
+ if (c->account_name)
+ free(c->account_name);
free( c );
c = next;
}
}
}
+ if (c->account_name)
+ free(c->account_name);
if (c->cloaked)
free(c->cloaked);
free( c );
} /* Client_SetFlags */
+GLOBAL void
+Client_SetAccountName(CLIENT *Client, const char *AccountName)
+{
+ assert(Client != NULL);
+
+ if (Client->account_name)
+ free(Client->account_name);
+
+ if (*AccountName)
+ Client->account_name = strdup(AccountName);
+ else
+ Client->account_name = NULL;
+}
+
+
GLOBAL void
Client_SetAway( CLIENT *Client, const char *Txt )
{
} /* Client_Away */
+GLOBAL char *
+Client_AccountName(CLIENT *Client)
+{
+ assert(Client != NULL);
+ return Client->account_name;
+}
+
+
/**
* Make sure that a given nickname is valid.
*
if (!Client_IsValidNick(Nick)) {
if (strlen(Nick ) >= Conf_MaxNickLength)
- IRC_WriteStrClient(Client, ERR_NICKNAMETOOLONG_MSG,
+ IRC_WriteErrClient(Client, ERR_NICKNAMETOOLONG_MSG,
Client_ID(Client), Nick,
Conf_MaxNickLength - 1);
else
- IRC_WriteStrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
+ IRC_WriteErrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
Client_ID(Client), Nick);
return false;
}
&& Client_Type(Client) != CLIENT_SERVICE) {
/* Make sure that this isn't a restricted/forbidden nickname */
if (Conf_NickIsBlocked(Nick)) {
- IRC_WriteStrClient(Client, ERR_FORBIDDENNICKNAME_MSG,
+ IRC_WriteErrClient(Client, ERR_FORBIDDENNICKNAME_MSG,
Client_ID(Client), Nick);
return false;
}
/* Nickname already registered? */
if (Client_Search(Nick)) {
- IRC_WriteStrClient(Client, ERR_NICKNAMEINUSE_MSG,
+ IRC_WriteErrClient(Client, ERR_NICKNAMEINUSE_MSG,
Client_ID(Client), Nick);
return false;
}
/* ID too long? */
if (strlen(ID) > CLIENT_ID_LEN) {
- IRC_WriteStrClient(Client, ERR_ERRONEUSNICKNAME_MSG, Client_ID(Client), ID);
+ IRC_WriteErrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
+ Client_ID(Client), ID);
return false;
}
return DISCONNECTED;
}
+ if (Client_AccountName(User)) {
+ if (!IRC_WriteStrClientPrefix(Client, Prefix,
+ "METADATA %s accountname :%s",
+ Client_ID(User),
+ Client_AccountName(User)))
+ return DISCONNECTED;
+ }
+
if (Conn_GetCertFp(Client_Conn(User))) {
if (!IRC_WriteStrClientPrefix(Client, Prefix,
"METADATA %s certfp :%s",