net/xmppserver_listener.lua

changeset 557
c9b3ffb08fe3
parent 545
60002993be04
child 585
033817e12ddb
equal deleted inserted replaced
556:624367a765cd 557:c9b3ffb08fe3
26 local s2s_new_incoming = require "core.s2smanager".new_incoming; 26 local s2s_new_incoming = require "core.s2smanager".new_incoming;
27 local s2s_streamopened = require "core.s2smanager".streamopened; 27 local s2s_streamopened = require "core.s2smanager".streamopened;
28 local s2s_streamclosed = require "core.s2smanager".streamclosed; 28 local s2s_streamclosed = require "core.s2smanager".streamclosed;
29 local s2s_destroy_session = require "core.s2smanager".destroy_session; 29 local s2s_destroy_session = require "core.s2smanager".destroy_session;
30 local s2s_attempt_connect = require "core.s2smanager".attempt_connection; 30 local s2s_attempt_connect = require "core.s2smanager".attempt_connection;
31 local stream_callbacks = { streamopened = s2s_streamopened, streamclosed = s2s_streamclosed, handlestanza = core_process_stanza }; 31 local stream_callbacks = { ns = "http://etherx.jabber.org/streams", streamopened = s2s_streamopened, streamclosed = s2s_streamclosed, handlestanza = core_process_stanza };
32
33 function stream_callbacks.error(session, error, data)
34 if error == "no-stream" then
35 session:close("invalid-namespace");
36 else
37 session.log("debug", "Server-to-server XML parse error: %s", tostring(error));
38 session:close("xml-not-well-formed");
39 end
40 end
32 41
33 local connlisteners_register = require "net.connlisteners".register; 42 local connlisteners_register = require "net.connlisteners".register;
34 43
35 local t_insert = table.insert; 44 local t_insert = table.insert;
36 local t_concat = table.concat; 45 local t_concat = table.concat;
51 session.parser = parser; 60 session.parser = parser;
52 61
53 session.notopen = true; 62 session.notopen = true;
54 63
55 function session.data(conn, data) 64 function session.data(conn, data)
56 parser:parse(data); 65 local ok, err = parser:parse(data);
66 if ok then return; end
67 session:close("xml-not-well-formed");
57 end 68 end
69
58 return true; 70 return true;
59 end 71 end
60 72
61 73
62 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'}; 74 local stream_xmlns_attr = {xmlns='urn:ietf:params:xml:ns:xmpp-streams'};

mercurial