net.server: Remove redundant commented code and some trailing whitespace
[prosody.git] / core / sessionmanager.lua
index 8d520d124af3cf2d91a1efb7f3e0c50b30343a45..29adcfbb732779cfc21e66af7605028b9c70a9a4 100644 (file)
@@ -66,21 +66,23 @@ function new_session(conn)
        return session;
 end
 
+local function null_data_handler(conn, data) log("debug", "Discarding data from destroyed c2s session: %s", data); end
+
 function destroy_session(session, err)
        (session.log or log)("info", "Destroying session for %s (%s@%s)", session.full_jid or "(unknown)", session.username or "(unknown)", session.host or "(unknown)");
        
        -- Remove session/resource from user's session list
        if session.full_jid then
-               hosts[session.host].events.fire_event("resource-unbind", {session=session, error=err});
-
                hosts[session.host].sessions[session.username].sessions[session.resource] = nil;
                full_sessions[session.full_jid] = nil;
-                       
+               
                if not next(hosts[session.host].sessions[session.username].sessions) then
                        log("debug", "All resources of %s are now offline", session.username);
                        hosts[session.host].sessions[session.username] = nil;
                        bare_sessions[session.username..'@'..session.host] = nil;
                end
+
+               hosts[session.host].events.fire_event("resource-unbind", {session=session, error=err});
        end
        
        for k in pairs(session) do
@@ -88,6 +90,7 @@ function destroy_session(session, err)
                        session[k] = nil;
                end
        end
+       session.data = null_data_handler;
 end
 
 function make_authenticated(session, username)
@@ -190,6 +193,7 @@ function streamopened(session, attr)
        end
 
        local features = st.stanza("stream:features");
+       hosts[session.host].events.fire_event("stream-features", { origin = session, features = features });
        fire_event("stream-features", session, features);
 
        send(features);