Second merge from waqas
authorMatthew Wild <mwild1@gmail.com>
Tue, 16 Dec 2008 02:40:50 +0000 (02:40 +0000)
committerMatthew Wild <mwild1@gmail.com>
Tue, 16 Dec 2008 02:40:50 +0000 (02:40 +0000)
core/sessionmanager.lua
core/xmlhandlers.lua
net/connlisteners.lua
net/xmppclient_listener.lua
net/xmppserver_listener.lua
plugins/mod_tls.lua
util/stanza.lua

index 169a6db20e1a3e965f0a01a96fba8eff0d47f142..963de7ce01436e51e125a58c9f81598a1e71d7e1 100644 (file)
@@ -113,8 +113,6 @@ function bind_resource(session, resource)
        if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end
        -- We don't support binding multiple resources
 
-       session.conntimetotal = gettime()-session.conntime;
-       
        resource = resource or uuid_generate();
        --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
        
index 38a0dd056c93f7843c516c347f6c725d47d22c78..d4d9e1416feff0795df40684df531b74f53d9712 100644 (file)
@@ -47,29 +47,27 @@ local ns_prefixes = {
 
 function init_xmlhandlers(session, stream_callbacks)
                local ns_stack = { "" };
-               local curr_ns = "";
+               local curr_ns, name = "";
                local curr_tag;
                local chardata = {};
                local xml_handlers = {};
                local log = session.log or default_log;
-
-               local send = session.send;
                
                local cb_streamopened = stream_callbacks.streamopened;
                local cb_streamclosed = stream_callbacks.streamclosed;
                local cb_error = stream_callbacks.error or function (session, e) error("XML stream error: "..tostring(e)); end;
                local cb_handlestanza = stream_callbacks.handlestanza;
                
-               local stream_ns = stream_callbacks.ns;
+               local stream_tag = stream_callbacks.stream_tag;
                
                local stanza
-               function xml_handlers:StartElement(name, attr)
+               function xml_handlers:StartElement(tagname, attr)
                        if stanza and #chardata > 0 then
                                -- We have some character data in the buffer
                                stanza:text(t_concat(chardata));
                                chardata = {};
                        end
-                       curr_ns,name = name:match("^(.+)|([%w%-]+)$");
+                       local curr_ns,name = tagname:match("^(.+)|([%w%-]+)$");
                        if curr_ns ~= "jabber:server" then
                                attr.xmlns = curr_ns;
                        end
@@ -91,7 +89,7 @@ function init_xmlhandlers(session, stream_callbacks)
                        
                        if not stanza then --if we are not currently inside a stanza
                                if session.notopen then
-                                       if name == "stream" and curr_ns == stream_ns then
+                                       if tagname == stream_tag then
                                                if cb_streamopened then
                                                        cb_streamopened(session, attr);
                                                end
@@ -120,10 +118,10 @@ function init_xmlhandlers(session, stream_callbacks)
                                t_insert(chardata, data);
                        end
                end
-               function xml_handlers:EndElement(name)
-                       curr_ns,name = name:match("^(.+)|([%w%-]+)$");
+               function xml_handlers:EndElement(tagname)
+                       curr_ns,name = tagname:match("^(.+)|([%w%-]+)$");
                        if (not stanza) or (#stanza.last_add > 0 and name ~= stanza.last_add[#stanza.last_add].name) then 
-                               if name == "stream" then
+                               if tagname == stream_tag then
                                        if cb_streamclosed then
                                                cb_streamclosed(session);
                                        end
index 8c9b163f7a2d80cb205ff1648a7a41d26ec47a7d..f027dfeb6457ed02308c45a90830e826849ab36f 100644 (file)
@@ -47,7 +47,8 @@ end
 function get(name)
        local h = listeners[name];
        if not h then
-               pcall(dofile, listeners_dir..name:gsub("[^%w%-]", "_").."_listener.lua");
+               local ok, ret = pcall(dofile, listeners_dir..name:gsub("[^%w%-]", "_").."_listener.lua");
+               if not ok then return nil, ret; end
                h = listeners[name];
        end
        return h;
index 50b8aa93259ff8241c0ee64f3f8026eedf27442c..357516e9508f58297b9a53716c4893d042cededa 100644 (file)
@@ -36,7 +36,7 @@ local sm_streamopened = sessionmanager.streamopened;
 local sm_streamclosed = sessionmanager.streamclosed;
 local st = stanza;
 
-local stream_callbacks = { ns = "http://etherx.jabber.org/streams", streamopened = sm_streamopened, streamclosed = sm_streamclosed, handlestanza = core_process_stanza };
+local stream_callbacks = { stream_tag = "http://etherx.jabber.org/streams|stream", streamopened = sm_streamopened, streamclosed = sm_streamclosed, handlestanza = core_process_stanza };
 
 function stream_callbacks.error(session, error, data)
        if error == "no-stream" then
index 4d4349aaf50f28cf2995b122defd4d43ef0f513d..36b4c47680e18be74b8241480a6050fde2519924 100644 (file)
@@ -28,7 +28,7 @@ local s2s_streamopened = require "core.s2smanager".streamopened;
 local s2s_streamclosed = require "core.s2smanager".streamclosed;
 local s2s_destroy_session = require "core.s2smanager".destroy_session;
 local s2s_attempt_connect = require "core.s2smanager".attempt_connection;
-local stream_callbacks = { ns = "http://etherx.jabber.org/streams", streamopened = s2s_streamopened, streamclosed = s2s_streamclosed, handlestanza =  core_process_stanza };
+local stream_callbacks = { stream_tag = "http://etherx.jabber.org/streams|stream", streamopened = s2s_streamopened, streamclosed = s2s_streamclosed, handlestanza =  core_process_stanza };
 
 function stream_callbacks.error(session, error, data)
        if error == "no-stream" then
index 771d251a72a298a91a0f36dc65244401ea4b7089..fc816ad14d1177b4b3aab59b56a8ec2ef43998f2 100644 (file)
@@ -33,8 +33,6 @@ module:add_handler("c2s_unauthed", "starttls", xmlns_starttls,
                function (session, stanza)
                        if session.conn.starttls then
                                session.send(st.stanza("proceed", { xmlns = xmlns_starttls }));
-                               -- FIXME: I'm commenting the below, not sure why it was necessary
-                               -- sessions[session.conn] = nil;
                                session:reset_stream();
                                session.conn.starttls();
                                session.log("info", "TLS negotiation started...");
index dd05ddaba440878a186fe2596af658b310bbfe67..6af7e2b22e386b3ff045bea23c5badc0b7d39463 100644 (file)
@@ -19,6 +19,7 @@
 
 
 local t_insert      =  table.insert;
+local t_concat      =  table.concat;
 local t_remove      =  table.remove;
 local t_concat      =  table.concat;
 local s_format      = string.format;