# HG changeset patch # User Matthew Wild # Date 1227144805 0 # Node ID 17bcecb0642095713cb2fd0675a0ac15def43fb4 # Parent 8ff322b550a3609513dd2c0eaf050f4afed3ce3f Use a stanza for c2s stream features instead of an array of strings. Removes a FIXME. diff -r 8ff322b550a3 -r 17bcecb06420 core/sessionmanager.lua --- a/core/sessionmanager.lua Thu Nov 20 01:32:24 2008 +0000 +++ b/core/sessionmanager.lua Thu Nov 20 01:33:25 2008 +0000 @@ -121,18 +121,12 @@ end - local features = {}; + local features = st.stanza("stream:features"); modulemanager.fire_event("stream-features", session, features); - -- FIXME: Need to send() this all at once - send(""); + send(features); - for _, feature in ipairs(features) do - send(tostring(feature)); - end - - send(""); - log("info", "Stream opened successfully"); + (session.log or log)("info", "Sent reply to client"); session.notopen = nil; end diff -r 8ff322b550a3 -r 17bcecb06420 plugins/mod_saslauth.lua --- a/plugins/mod_saslauth.lua Thu Nov 20 01:32:24 2008 +0000 +++ b/plugins/mod_saslauth.lua Thu Nov 20 01:33:25 2008 +0000 @@ -83,19 +83,21 @@ add_handler("c2s_unauthed", "abort", xmlns_sasl, sasl_handler); add_handler("c2s_unauthed", "response", xmlns_sasl, sasl_handler); +local mechanisms_attr = { xmlns='urn:ietf:params:xml:ns:xmpp-sasl' }; +local bind_attr = { xmlns='urn:ietf:params:xml:ns:xmpp-bind' }; +local xmpp_session_attr = { xmlns='urn:ietf:params:xml:ns:xmpp-session' }; add_event_hook("stream-features", function (session, features) if not session.username then - t_insert(features, ""); + features:tag("mechanisms", mechanisms_attr); -- TODO: Provide PLAIN only if TLS is active, this is a SHOULD from the introduction of RFC 4616. This behavior could be overridden via configuration but will issuing a warning or so. - t_insert(features, "PLAIN"); - t_insert(features, "DIGEST-MD5"); - t_insert(features, ""); + features:tag("mechanism"):text("PLAIN"):up(); + features:tag("mechanism"):text("DIGEST-MD5"):up(); + features:up(); else - t_insert(features, ""); - t_insert(features, ""); + features:tag("bind", bind_attr):tag("required"):up():up(); + features:tag("session", xmpp_session_attr):up(); end - --send [[ ]] end); add_iq_handler("c2s", "urn:ietf:params:xml:ns:xmpp-bind", diff -r 8ff322b550a3 -r 17bcecb06420 plugins/mod_tls.lua --- a/plugins/mod_tls.lua Thu Nov 20 01:32:24 2008 +0000 +++ b/plugins/mod_tls.lua Thu Nov 20 01:33:25 2008 +0000 @@ -24,9 +24,10 @@ end end); +local starttls_attr = { xmlns = xmlns_starttls }; add_event_hook("stream-features", function (session, features) if session.conn.starttls then - t_insert(features, ""); + features:tag("starttls", starttls_attr):up(); end end); diff -r 8ff322b550a3 -r 17bcecb06420 plugins/mod_vcard.lua --- a/plugins/mod_vcard.lua Thu Nov 20 01:32:24 2008 +0000 +++ b/plugins/mod_vcard.lua Thu Nov 20 01:33:25 2008 +0000 @@ -43,9 +43,10 @@ end end); +local feature_vcard_attr = { var='vcard-temp' }; add_event_hook("stream-features", function (session, features) if session.type == "c2s" then - t_insert(features, ""); + features:tag("feature", feature_vcard_attr):up(); end end);