plugins/mod_c2s.lua
changeset 5518 0220093e34fa
parent 5505 0b6a99e6c1b1
child 5571 ae9672f4079a
equal deleted inserted replaced
5517:9d7349bbe4d2 5518:0220093e34fa
   131 		if session.notopen then
   131 		if session.notopen then
   132 			session.send("<?xml version='1.0'?>");
   132 			session.send("<?xml version='1.0'?>");
   133 			session.send(st.stanza("stream:stream", default_stream_attr):top_tag());
   133 			session.send(st.stanza("stream:stream", default_stream_attr):top_tag());
   134 		end
   134 		end
   135 		if reason then -- nil == no err, initiated by us, false == initiated by client
   135 		if reason then -- nil == no err, initiated by us, false == initiated by client
       
   136 			local stream_error = st.stanza("stream:error");
   136 			if type(reason) == "string" then -- assume stream error
   137 			if type(reason) == "string" then -- assume stream error
   137 				log("debug", "Disconnecting client, <stream:error> is: %s", reason);
   138 				stream_error:tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' });
   138 				session.send(st.stanza("stream:error"):tag(reason, {xmlns = 'urn:ietf:params:xml:ns:xmpp-streams' }));
       
   139 			elseif type(reason) == "table" then
   139 			elseif type(reason) == "table" then
   140 				if reason.condition then
   140 				if reason.condition then
   141 					local stanza = st.stanza("stream:error"):tag(reason.condition, stream_xmlns_attr):up();
   141 					stream_error:tag(reason.condition, stream_xmlns_attr):up();
   142 					if reason.text then
   142 					if reason.text then
   143 						stanza:tag("text", stream_xmlns_attr):text(reason.text):up();
   143 						stream_error:tag("text", stream_xmlns_attr):text(reason.text):up();
   144 					end
   144 					end
   145 					if reason.extra then
   145 					if reason.extra then
   146 						stanza:add_child(reason.extra);
   146 						stream_error:add_child(reason.extra);
   147 					end
   147 					end
   148 					log("debug", "Disconnecting client, <stream:error> is: %s", tostring(stanza));
       
   149 					session.send(stanza);
       
   150 				elseif reason.name then -- a stanza
   148 				elseif reason.name then -- a stanza
   151 					log("debug", "Disconnecting client, <stream:error> is: %s", tostring(reason));
   149 					stream_error = reason;
   152 					session.send(reason);
       
   153 				end
   150 				end
   154 			end
   151 			end
       
   152 			stream_error = tostring(stream_error);
       
   153 			log("debug", "Disconnecting client, <stream:error> is: %s", stream_error);
       
   154 			session.send(stream_error);
   155 		end
   155 		end
   156 		
   156 		
   157 		session.send("</stream:stream>");
   157 		session.send("</stream:stream>");
   158 		function session.send() return false; end
   158 		function session.send() return false; end
   159 		
   159