127 clientkey, serverkey = nil, nil; |
127 clientkey, serverkey = nil, nil; |
128 end |
128 end |
129 |
129 |
130 -- Connect! |
130 -- Connect! |
131 conn:connect_client(account.jid, account.password, clientkey, serverkey); |
131 conn:connect_client(account.jid, account.password, clientkey, serverkey); |
132 |
|
133 -- COMPAT: Tigase discards stanzas sent at the same time as </stream:stream> |
|
134 local _real_close = conn.close; |
|
135 function conn:close() |
|
136 conn:debug("Delaying close..."); |
|
137 local function close_conn() |
|
138 local function do_close() |
|
139 if _real_close then |
|
140 conn:debug("Closing now..."); |
|
141 local close = _real_close; |
|
142 _real_close = nil; |
|
143 close(conn); |
|
144 end |
|
145 end |
|
146 local close_delay = tonumber(opts.close_delay) or 0; |
|
147 if close_delay > 0 then |
|
148 verse.add_task(close_delay, do_close); |
|
149 else |
|
150 do_close(); |
|
151 end |
|
152 end |
|
153 if conn.conn:bufferlen() == 0 then |
|
154 close_conn(); |
|
155 else |
|
156 conn:hook("drained", close_conn); |
|
157 end |
|
158 end |
|
159 -- /COMPAT |
|
160 |
|
161 |
|
162 if type(opts.resource) == "string" then |
132 if type(opts.resource) == "string" then |
163 conn.resource = opts.resource; |
133 conn.resource = opts.resource; |
164 end |
134 end |
165 |
135 |
166 local ok, ret = pcall(verse.loop); |
136 local ok, ret = pcall(verse.loop); |