# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1292425426 0
# Node ID 4bb1e9c91fbe97a1d5a8abb42b9bce62dd3e0e56
# Parent  7c47e5639c00806f1a0957766f0af51aafad03c5
plugins.legacy: Try to login anyways, compat for servers not supporting XEP 78 properly.

diff -r 7c47e5639c00 -r 4bb1e9c91fbe plugins/legacy.lua
--- a/plugins/legacy.lua	Sat Nov 27 18:48:41 2010 +0000
+++ b/plugins/legacy.lua	Wed Dec 15 15:03:46 2010 +0000
@@ -7,7 +7,9 @@
 		local query = result:get_child("query", xmlns_auth);
 		if result.attr.type ~= "result" or not query then
 			local type, cond, text = result:get_error();
-			stream:event("authentication-failure", { condition = cond });
+                       stream:debug("warn", "%s %s: %s", type, cond, text);
+                       --stream:event("authentication-failure", { condition = cond });
+                       -- COMPAT continue anyways
 		end
 		local auth_data = {
 			username = stream.username;
@@ -17,6 +19,7 @@
 		};
 		local request = verse.iq({ to = stream.host, type = "set" })
 			:tag("query", { xmlns = xmlns_auth });
+               if #query > 0 then
 		for tag in query:childtags() do
 			local field = tag.name;
 			local value = auth_data[field];
@@ -28,6 +31,13 @@
 				return false;
 			end
 		end
+               else -- COMPAT for servers not following XEP 78
+                       for field, value in pairs(auth_data) do
+                               if value then
+                                       request:tag(field):text(value):up();
+                               end
+                       end
+               end
 		stream:send_iq(request, function (response)
 			if response.attr.type == "result" then
 				stream.resource = auth_data.resource;