~samwhited/xmpp

xmpp/blocklist d---------
all: add strict namespace checking to mux

Previously anything that had a local name that looked like a stanza
("message", "iq", or "presence") would be treated as such, opening us up
to potential vulnerabilities in servers that allow a
{jabber:server}message on a jabber:client stream but don't treat it as a
stanza, for example.
Being more strict about checking namespaces helps to avoid this issue,
but does require a breaking change to the mux API.

Signed-off-by: Sam Whited <sam@samwhited.com>
all: fix lints in doc comments

Signed-off-by: Sam Whited <sam@samwhited.com>
internal/stream: remove s2s bool from stream send

Previously we set the namespace depending on whether a server-to-server
value was set. However, the namespace is set in the stream and may be
other values (such as the Jabber Component namespace) as well, so just
leave this alone and let the negotiator handle it.

Signed-off-by: Sam Whited <sam@samwhited.com>
xmpp: return start token for iter IQ payloads

Previously the start token was discarded when calling IterIQ or
IterIQElement. However, we may need attributes from it, making IterIQ
impossible to use for some cases where we still might want an easy way
to iterate. Returning the start element fixes this and avoids a lot of
boilerplate re-implementing iter IQ for every place we might want to do
this.

Signed-off-by: Sam Whited <sam@samwhited.com>
blocklist: fix missing error handling

Signed-off-by: Sam Whited <sam@samwhited.com>
blocklist: new package implementing XEP-0191

Fixes #139

Signed-off-by: Sam Whited <sam@samwhited.com>