Changeset

41:1a1bd8cd4bdb

plugins.ping: Don't handle all errors as successful pongs, call callback with nil time and 3rd parameter a table with error info
author Matthew Wild <mwild1@gmail.com>
date Wed, 23 Dec 2009 00:59:35 +0000
parents 40:afd037420977
children 42:6006e6bb1c28
files plugins/ping.lua
diffstat 1 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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