From 13c9d77ff45c8c4fed0bef6dac77d71e9b964b88 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Fri, 26 Mar 2010 08:24:29 +0500 Subject: net.server_event: Fixed spelling fail. --- net/server_event.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/server_event.lua b/net/server_event.lua index af6da45e..5e62f3fd 100644 --- a/net/server_event.lua +++ b/net/server_event.lua @@ -20,14 +20,14 @@ local LAST_MODIFIED = "2009/11/20" local cfg = { MAX_CONNECTIONS = 100000, -- max per server connections (use "ulimit -n" on *nix) - MAX_HANDSHAKE_ATTEMPS = 1000, -- attemps to finish ssl handshake - HANDSHAKE_TIMEOUT = 60, -- timout in seconds per handshake attemp + MAX_HANDSHAKE_ATTEMPS = 1000, -- attempts to finish ssl handshake + HANDSHAKE_TIMEOUT = 60, -- timout in seconds per handshake attempt MAX_READ_LENGTH = 1024 * 1024 * 1024 * 1024, -- max bytes allowed to read from sockets MAX_SEND_LENGTH = 1024 * 1024 * 1024 * 1024, -- max bytes size of write buffer (for writing on sockets) - ACCEPT_DELAY = 10, -- seconds to wait until the next attemp of a full server to accept + ACCEPT_DELAY = 10, -- seconds to wait until the next attempt of a full server to accept READ_TIMEOUT = 60 * 60 * 6, -- timeout in seconds for read data from socket WRITE_TIMEOUT = 180, -- timeout in seconds for write data on socket - CONNECT_TIMEOUT = 20, -- timeout in seconds for connection attemps + CONNECT_TIMEOUT = 20, -- timeout in seconds for connection attempts CLEAR_DELAY = 5, -- seconds to wait for clearing interface list (and calling ondisconnect listeners) DEBUG = true, -- show debug messages } -- cgit v1.2.3 From ad6a65efa1506e70e460430e9636573eed9f2abc Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Tue, 30 Mar 2010 19:40:16 +0100 Subject: stanza_router, s2smanager, modulemanager: Fix for handling of the default namespace on stanzas, causing sometimes jabber:client to be sent over s2s, and accepted --- core/modulemanager.lua | 2 +- core/s2smanager.lua | 4 ++-- core/stanza_router.lua | 11 ++++------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/core/modulemanager.lua b/core/modulemanager.lua index 4d4468a7..3ad02b30 100644 --- a/core/modulemanager.lua +++ b/core/modulemanager.lua @@ -270,7 +270,7 @@ function handle_stanza(host, origin, stanza) (handlers[1])(origin, stanza); return true; else - if stanza.attr.xmlns == "jabber:client" then + if stanza.attr.xmlns == nil then log("debug", "Unhandled %s stanza: %s; xmlns=%s", origin.type, stanza.name, xmlns); -- we didn't handle it if stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); diff --git a/core/s2smanager.lua b/core/s2smanager.lua index 3627661a..ea6fe96d 100644 --- a/core/s2smanager.lua +++ b/core/s2smanager.lua @@ -68,7 +68,7 @@ local function bounce_sendq(session, reason) for i, data in ipairs(sendq) do local reply = data[2]; local xmlns = reply.attr.xmlns; - if not xmlns or xmlns == "jabber:client" or xmlns == "jabber:server" then + if not xmlns then reply.attr.type = "error"; reply:tag("error", {type = "cancel"}) :tag("remote-server-not-found", {xmlns = "urn:ietf:params:xml:ns:xmpp-stanzas"}):up(); @@ -91,7 +91,7 @@ function send_to_host(from_host, to_host, data) local host = hosts[from_host].s2sout[to_host]; if host then -- We have a connection to this host already - if host.type == "s2sout_unauthed" and (data.name ~= "db:verify" or not host.dialback_key) and ((not data.xmlns) or data.xmlns == "jabber:client" or data.xmlns == "jabber:server") then + if host.type == "s2sout_unauthed" and (data.name ~= "db:verify" or not host.dialback_key) then (host.log or log)("debug", "trying to send over unauthed s2sout to "..to_host); -- Queue stanza until we are able to send it diff --git a/core/stanza_router.lua b/core/stanza_router.lua index f7e881e3..7ebfb2bb 100644 --- a/core/stanza_router.lua +++ b/core/stanza_router.lua @@ -23,9 +23,6 @@ local bare_sessions = _G.prosody.bare_sessions; function core_process_stanza(origin, stanza) (origin.log or log)("debug", "Received[%s]: %s", origin.type, stanza:top_tag()) - -- Currently we guarantee every stanza to have an xmlns, should we keep this rule? - if not stanza.attr.xmlns then stanza.attr.xmlns = "jabber:client"; end - -- TODO verify validity of stanza (as well as JID validity) if stanza.attr.type == "error" and #stanza.tags == 0 then return; end -- TODO invalid stanza, log if stanza.name == "iq" then @@ -36,7 +33,7 @@ function core_process_stanza(origin, stanza) end end - if origin.type == "c2s" and stanza.attr.xmlns == "jabber:client" then + if origin.type == "c2s" and not stanza.attr.xmlns then if not origin.full_jid and not(stanza.name == "iq" and stanza.attr.type == "set" and stanza.tags[1] and stanza.tags[1].name == "bind" and stanza.tags[1].attr.xmlns == "urn:ietf:params:xml:ns:xmpp-bind") then @@ -92,7 +89,7 @@ function core_process_stanza(origin, stanza) return; -- FIXME what should we do here? end]] -- FIXME - if (origin.type == "s2sin" or origin.type == "c2s" or origin.type == "component") and xmlns == "jabber:client" then + if (origin.type == "s2sin" or origin.type == "c2s" or origin.type == "component") and xmlns == nil then if origin.type == "s2sin" and not origin.dummy then local host_status = origin.hosts[from_host]; if not host_status or not host_status.authed then -- remote server trying to impersonate some other server? @@ -105,14 +102,14 @@ function core_process_stanza(origin, stanza) local h = hosts[stanza.attr.to or origin.host or origin.to_host]; if h then local event; - if stanza.attr.xmlns == "jabber:client" then + if xmlns == nil then if stanza.name == "iq" and (stanza.attr.type == "set" or stanza.attr.type == "get") then event = "stanza/iq/"..stanza.tags[1].attr.xmlns..":"..stanza.tags[1].name; else event = "stanza/"..stanza.name; end else - event = "stanza/"..stanza.attr.xmlns..":"..stanza.name; + event = "stanza/"..xmlns..":"..stanza.name; end if h.events.fire_event(event, {origin = origin, stanza = stanza}) then return; end end -- cgit v1.2.3 From 64a003d115e699b5076af196e2f7cbf3e345a618 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Tue, 30 Mar 2010 19:44:50 +0100 Subject: xmppserver_listener: Compatibility fix for older Prosodies with the s2s xmlns bug --- net/xmppserver_listener.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/xmppserver_listener.lua b/net/xmppserver_listener.lua index 46b886f7..dc3c2bb4 100644 --- a/net/xmppserver_listener.lua +++ b/net/xmppserver_listener.lua @@ -32,6 +32,9 @@ end local function handleerr(err) log("error", "Traceback[s2s]: %s: %s", tostring(err), debug.traceback()); end function stream_callbacks.handlestanza(a, b) + if b.attr.xmlns == "jabber:client" then --COMPAT: Prosody pre-0.6.2 may send jabber:client + b.attr.xmlns = nil; + end xpcall(function () core_process_stanza(a, b) end, handleerr); end -- cgit v1.2.3