usermanager, mod_auth_internal_hashed, mod_legacyauth: New order of parameters for...
[prosody.git] / core / sessionmanager.lua
index db32a0bc702693eeabea61f3573cbcc619478bf9..6376851533021b51b0a10b3f2730a8a41c3039a6 100644 (file)
@@ -27,6 +27,7 @@ local nameprep = require "util.encodings".stringprep.nameprep;
 local resourceprep = require "util.encodings".stringprep.resourceprep;
 local nodeprep = require "util.encodings".stringprep.nodeprep;
 
+local initialize_filters = require "util.filters".initialize;
 local fire_event = require "core.eventmanager".fire_event;
 local add_task = require "util.timer".add_task;
 local gettime = require "socket".gettime;
@@ -50,8 +51,20 @@ function new_session(conn)
        end
        open_sessions = open_sessions + 1;
        log("debug", "open sessions now: ".. open_sessions);
+       
+       local filter = initialize_filters(session);
        local w = conn.write;
-       session.send = function (t) w(conn, tostring(t)); end
+       session.send = function (t)
+               if t.name then
+                       t = filter("stanzas/out", t);
+               end
+               if t then
+                       t = filter("bytes/out", tostring(t));
+                       if t then
+                               return w(conn, t);
+                       end
+               end
+       end
        session.ip = conn:ip();
        local conn_name = "c2s"..tostring(conn):match("[a-f0-9]+$");
        session.log = logger.init(conn_name);
@@ -111,7 +124,7 @@ end
 
 function make_authenticated(session, username)
        username = nodeprep(username);
-       if not username and #username > 0 then return nil, "Invalid username"; end
+       if not username or #username == 0 then return nil, "Invalid username"; end
        session.username = username;
        if session.type == "c2s_unauthed" then
                session.type = "c2s";