diff --git a/irc/handlers.go b/irc/handlers.go index d6061b86..70f5e4b6 100644 --- a/irc/handlers.go +++ b/irc/handlers.go @@ -3374,6 +3374,16 @@ func playMetadataList(rb *ResponseBuffer, nick, target string, values map[string } } +func playMetadataVerbBatch(rb *ResponseBuffer, target string, values map[string]string) { + batchId := rb.StartNestedBatch("metadata", target) + defer rb.EndNestedBatch(batchId) + + for key, val := range values { + visibility := "*" + rb.Add(nil, rb.session.client.server.name, "METADATA", target, key, visibility, val) + } +} + // REHASH func rehashHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool { nick := client.Nick() diff --git a/irc/server.go b/irc/server.go index 7003a367..7aee6705 100644 --- a/irc/server.go +++ b/irc/server.go @@ -499,7 +499,7 @@ func (server *Server) playRegistrationBurst(session *Session) { server.RplISupport(c, rb) } if session.capabilities.Has(caps.Metadata) { - playMetadataList(rb, d.nick, d.nick, c.ListMetadata()) + playMetadataVerbBatch(rb, d.nick, c.ListMetadata()) } if d.account != "" && session.capabilities.Has(caps.Persistence) { reportPersistenceStatus(c, rb, false)