plugins.ping: Don't handle all errors as successful pongs, call callback with nil time and 3rd parameter a table with error info

Wed, 23 Dec 2009 00:59:35 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Wed, 23 Dec 2009 00:59:35 +0000
changeset 41
1a1bd8cd4bdb
parent 40
afd037420977
child 42
6006e6bb1c28

plugins.ping: Don't handle all errors as successful pongs, call callback with nil time and 3rd parameter a table with error info

plugins/ping.lua file | annotate | diff | comparison | revisions
--- a/plugins/ping.lua	Tue Dec 22 01:57:02 2009 +0000
+++ b/plugins/ping.lua	Wed Dec 23 00:59:35 2009 +0000
@@ -1,3 +1,4 @@
+require "util.xstanza";
 
 local xmlns_ping = "urn:xmpp:ping";
 
@@ -6,6 +7,13 @@
 		local t = socket.gettime();
 		stream:send_iq(verse.iq{ to = jid, type = "get" }:tag("ping", { xmlns = xmlns_ping }), 
 			function (reply)
+				if reply.attr.type == "error" then
+					local type, condition, text = reply:get_error();
+					if condition ~= "service-unavailable" and condition ~= "feature-not-implemented" then
+						callback(nil, jid, { type = type, condition = condition, text = text });
+						return;
+					end
+				end
 				callback(socket.gettime()-t, jid);
 			end);
 	end

mercurial