clix.lua

changeset 45
36f5bf718d3c
parent 43
1ec64b321834
child 52
95ea1dca92ed
equal deleted inserted replaced
44:3c3cc6d75814 45:36f5bf718d3c
99 99
100 -- COMPAT: Tigase discards stanzas sent at the same time as </stream:stream> 100 -- COMPAT: Tigase discards stanzas sent at the same time as </stream:stream>
101 local _real_close = conn.close; 101 local _real_close = conn.close;
102 function conn:close() 102 function conn:close()
103 conn:debug("Delaying close..."); 103 conn:debug("Delaying close...");
104 conn:hook("drained", function () 104 local function close_conn()
105 local function do_close() 105 local function do_close()
106 if _real_close then 106 if _real_close then
107 conn:debug("Closing now..."); 107 conn:debug("Closing now...");
108 local close = _real_close; 108 local close = _real_close;
109 _real_close = nil; 109 _real_close = nil;
114 if close_delay > 0 then 114 if close_delay > 0 then
115 verse.add_task(close_delay, do_close); 115 verse.add_task(close_delay, do_close);
116 else 116 else
117 do_close(); 117 do_close();
118 end 118 end
119 end); 119 end
120 if conn.conn:bufferlen() == 0 then
121 close_conn();
122 else
123 conn:hook("drained", close_conn);
124 end
120 end 125 end
121 -- /COMPAT 126 -- /COMPAT
122 127
123 128
124 if type(opts.resource) == "string" then 129 if type(opts.resource) == "string" then

mercurial