Do not send two 792 numerics when changing a metadata from one non-empty value to another.

This commit is contained in:
Jilles Tjoelker 2009-06-03 20:44:37 +02:00
parent f62bb0776a
commit 104fea6cda
1 changed files with 12 additions and 5 deletions

View File

@ -1747,14 +1747,21 @@ set_metadata(struct Client *client_p, const char *key, const char *value)
{
struct MetadataEntry *md;
delete_metadata(client_p, key);
if(client_p->user != NULL)
{
md = rb_bh_alloc(metadata_heap);
rb_strlcpy(md->key, key, NICKLEN);
rb_strlcpy(md->value, value, TOPICLEN);
md = irc_dictionary_retrieve(client_p->user->metadata, key);
if (md == NULL)
{
md = rb_bh_alloc(metadata_heap);
rb_strlcpy(md->key, key, NICKLEN);
irc_dictionary_add(client_p->user->metadata, md->key, md);
}
else if (!strcmp(md->key, key) && !strcmp(md->value, value))
return;
else
rb_strlcpy(md->key, key, NICKLEN);
irc_dictionary_add(client_p->user->metadata, md->key, md);
rb_strlcpy(md->value, value, TOPICLEN);
}
sendto_common_channels_local_with_capability(client_p, CLICAP_PRESENCE, form_str(RPL_METADATACHG), me.name, client_p->name, key, value);