mod_pubsub: Handle disco#info and disco#items
[prosody.git] / core / sessionmanager.lua
index a3c4c5ad9cc1af06a45bf6d4b35c09a93eebed5b..d36591bfb34c2218c01c84388796409dbda57a88 100644 (file)
@@ -25,9 +25,10 @@ local rm_load_roster = require "core.rostermanager".load_roster;
 local config_get = require "core.configmanager".get;
 local nameprep = require "util.encodings".stringprep.nameprep;
 local resourceprep = require "util.encodings".stringprep.resourceprep;
+local nodeprep = require "util.encodings".stringprep.nodeprep;
 
-local filters_initialize = require "util.filters".initialize;
-local fire_event = require "core.eventmanager".fire_event;
+local initialize_filters = require "util.filters".initialize;
+local fire_event = prosody.events.fire_event;
 local add_task = require "util.timer".add_task;
 local gettime = require "socket".gettime;
 
@@ -51,7 +52,7 @@ function new_session(conn)
        open_sessions = open_sessions + 1;
        log("debug", "open sessions now: ".. open_sessions);
        
-       local filter = filters_initialize(session);
+       local filter = initialize_filters(session);
        local w = conn.write;
        session.send = function (t)
                if t.name then
@@ -85,6 +86,7 @@ local resting_session = { -- Resting, not dead
                close = function (session)
                        session.log("debug", "Attempt to close already-closed session");
                end;
+               filter = function (type, data) return data; end;
        }; resting_session.__index = resting_session;
 
 function retire_session(session)
@@ -122,6 +124,8 @@ function destroy_session(session, err)
 end
 
 function make_authenticated(session, username)
+       username = nodeprep(username);
+       if not username or #username == 0 then return nil, "Invalid username"; end
        session.username = username;
        if session.type == "c2s_unauthed" then
                session.type = "c2s";