verse.client: Try to behave better when stream is closed gracefully

Sun, 10 Feb 2013 02:53:03 +0100

author
Kim Alvefur <zash@zash.se>
date
Sun, 10 Feb 2013 02:53:03 +0100
changeset 323
5bf3b13edb80
parent 322
819b35b8fcf6
child 324
dbb3362c1ff3

verse.client: Try to behave better when stream is closed gracefully

client.lua file | annotate | diff | comparison | revisions
--- a/client.lua	Sun Feb 10 02:50:02 2013 +0100
+++ b/client.lua	Sun Feb 10 02:53:03 2013 +0100
@@ -32,7 +32,12 @@
 end
 
 function stream_callbacks.streamclosed(stream)
-	return stream:event("closed");
+	if not stream.notopen then
+		stream:send("</stream:stream>");
+		stream.notopen = true;
+	end
+	stream:event("closed");
+	return stream:close("stream closed")
 end
 
 function stream_callbacks.handlestanza(stream, stanza)
@@ -129,10 +134,13 @@
 
 	local _base_close = self.close;
 	function self:close(reason)
+		self.close = _base_close;
 		if not self.notopen then
 			self:send("</stream:stream>");
+			self.notopen = true;
+		else
+			return self:close(reason);
 		end
-		return _base_close(self);
 	end
 	
 	local function start_connect()

mercurial