bosh.lua

changeset 411
db462d4feb44
parent 262
f47afb171e6e
child 490
6b2f31da9610
equal deleted inserted replaced
410:6171ef2a4025 411:db462d4feb44
62 local request, err = http.request(self.bosh_url, { body = tostring(payload) }, function (response, code, request) 62 local request, err = http.request(self.bosh_url, { body = tostring(payload) }, function (response, code, request)
63 if code ~= 0 then 63 if code ~= 0 then
64 self.inactive_since = nil; 64 self.inactive_since = nil;
65 return self:_handle_response(response, code, request); 65 return self:_handle_response(response, code, request);
66 end 66 end
67 67
68 -- Connection issues, we need to retry this request 68 -- Connection issues, we need to retry this request
69 local time = os.time(); 69 local time = os.time();
70 if not self.inactive_since then 70 if not self.inactive_since then
71 self.inactive_since = time; -- So we know when it is time to give up 71 self.inactive_since = time; -- So we know when it is time to give up
72 elseif time - self.inactive_since > self.bosh_max_inactivity then 72 elseif time - self.inactive_since > self.bosh_max_inactivity then
73 return self:_disconnected(); 73 return self:_disconnected();
74 else 74 else
75 self:debug("%d seconds left to reconnect, retrying in %d seconds...", 75 self:debug("%d seconds left to reconnect, retrying in %d seconds...",
76 self.bosh_max_inactivity - (time - self.inactive_since), reconnect_timeout); 76 self.bosh_max_inactivity - (time - self.inactive_since), reconnect_timeout);
77 end 77 end
78 78
79 -- Set up reconnect timer 79 -- Set up reconnect timer
80 timer.add_task(reconnect_timeout, function () 80 timer.add_task(reconnect_timeout, function ()
81 self:debug("Retrying request..."); 81 self:debug("Retrying request...");
82 -- Remove old request 82 -- Remove old request
83 for i, waiting_request in ipairs(self.bosh_waiting_requests) do 83 for i, waiting_request in ipairs(self.bosh_waiting_requests) do
101 self:event("disconnected"); 101 self:event("disconnected");
102 end 102 end
103 103
104 function stream_mt:_send_session_request() 104 function stream_mt:_send_session_request()
105 local body = self:_make_body(); 105 local body = self:_make_body();
106 106
107 -- XEP-0124 107 -- XEP-0124
108 body.attr.hold = "1"; 108 body.attr.hold = "1";
109 body.attr.wait = "60"; 109 body.attr.wait = "60";
110 body.attr["xml:lang"] = "en"; 110 body.attr["xml:lang"] = "en";
111 body.attr.ver = "1.6"; 111 body.attr.ver = "1.6";
112 112
113 -- XEP-0206 113 -- XEP-0206
114 body.attr.from = self.jid; 114 body.attr.from = self.jid;
115 body.attr.to = self.host; 115 body.attr.to = self.host;
116 body.attr.secure = 'true'; 116 body.attr.secure = 'true';
117 117
118 http.request(self.bosh_url, { body = tostring(body) }, function (response, code) 118 http.request(self.bosh_url, { body = tostring(body) }, function (response, code)
119 if code == 0 then 119 if code == 0 then
120 -- Failed to connect 120 -- Failed to connect
121 return self:_disconnected(); 121 return self:_disconnected();
122 end 122 end

mercurial