- 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, sizeof md->key);
+ 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, sizeof md->key);