* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
- * $Id: client.c 3514 2007-06-06 16:25:21Z nenolod $
*/
#include "stdinc.h"
#include "config.h"
const char *reason = NULL;
const char *exit_reason = conn_closed;
- if(ConfigFileEntry.kline_with_reason && !EmptyString(aconf->passwd))
+ if(ConfigFileEntry.kline_with_reason)
{
- reason = aconf->passwd;
- exit_reason = aconf->passwd;
+ reason = get_user_ban_reason(aconf);
+ exit_reason = reason;
}
else
{
if(IsOper(source_p))
rb_dlinkFindDestroy(source_p, &oper_list);
+ /* get rid of any metadata the user may have */
+ user_metadata_clear(source_p);
+
sendto_common_channels_local(source_p, ":%s!%s@%s QUIT :%s",
source_p->name,
source_p->username, source_p->host, comment);
{
free_away(client_p);
- /* get rid of any metadata the user may have */
- if(IsOper(client_p))
- {
- user_metadata_delete(client_p, "swhois", 0);
- user_metadata_delete(client_p, "operstring", 0);
- }
- user_metadata_delete(client_p, "OACCEPT", 0);
-
if(--user->refcnt <= 0)
{
if(user->away)
{
struct Metadata *md;
- if(irc_dictionary_find(target->user->metadata, name) != NULL)
- return NULL;
-
md = rb_malloc(sizeof(struct Metadata));
md->name = rb_strdup(name);
md->value = rb_strdup(value);
if(propegate)
sendto_match_servs(&me, "*", CAP_ENCAP, NOCAPS, "ENCAP * METADATA ADD %s %s :%s",
- target->name, name, value);
+ target->id, name, value);
return md;
}
if(propegate)
sendto_match_servs(&me, "*", CAP_ENCAP, NOCAPS, "ENCAP * METADATA DELETE %s %s",
- target->name, name);
+ target->id, name);
}
/*
return irc_dictionary_retrieve(target->user->metadata, name);
}
+/*
+ * user_metadata_clear
+ *
+ * inputs - pointer to user struct
+ * output - none
+ * side effects - metadata is cleared from the user in question
+ */
+void
+user_metadata_clear(struct Client *target)
+{
+ struct Metadata *md;
+ struct DictionaryIter iter;
+
+ DICTIONARY_FOREACH(md, &iter, target->user->metadata)
+ {
+ user_metadata_delete(target, md->name, 0);
+ }
+}