244 local session = { |
244 local session = { |
245 type = "c2s_unauthed", conn = {}, sid = sid, rid = tonumber(attr.rid)-1, host = attr.to, |
245 type = "c2s_unauthed", conn = {}, sid = sid, rid = tonumber(attr.rid)-1, host = attr.to, |
246 bosh_version = attr.ver, bosh_wait = attr.wait, streamid = sid, |
246 bosh_version = attr.ver, bosh_wait = attr.wait, streamid = sid, |
247 bosh_hold = BOSH_DEFAULT_HOLD, bosh_max_inactive = BOSH_DEFAULT_INACTIVITY, |
247 bosh_hold = BOSH_DEFAULT_HOLD, bosh_max_inactive = BOSH_DEFAULT_INACTIVITY, |
248 requests = { }, send_buffer = {}, reset_stream = bosh_reset_stream, |
248 requests = { }, send_buffer = {}, reset_stream = bosh_reset_stream, |
249 close = bosh_close_stream, dispatch_stanza = core_process_stanza, |
249 close = bosh_close_stream, dispatch_stanza = core_process_stanza, notopen = true, |
250 log = logger.init("bosh"..sid), secure = consider_bosh_secure or request.secure, |
250 log = logger.init("bosh"..sid), secure = consider_bosh_secure or request.secure, |
251 ip = get_ip_from_request(request); |
251 ip = get_ip_from_request(request); |
252 }; |
252 }; |
253 sessions[sid] = session; |
253 sessions[sid] = session; |
254 |
254 |
255 session.log("debug", "BOSH session created for request from %s", session.ip); |
255 session.log("debug", "BOSH session created for request from %s", session.ip); |
256 log("info", "New BOSH session, assigned it sid '%s'", sid); |
256 log("info", "New BOSH session, assigned it sid '%s'", sid); |
257 |
257 |
258 -- Send creation response |
258 -- Send creation response |
259 local creating_session = true; |
259 local creating_session = true; |
260 local features = st.stanza("stream:features"); |
|
261 hosts[session.host].events.fire_event("stream-features", { origin = session, features = features }); |
|
262 fire_event("stream-features", session, features); |
|
263 table.insert(session.send_buffer, tostring(features)); |
|
264 |
260 |
265 local r = session.requests; |
261 local r = session.requests; |
266 function session.send(s) |
262 function session.send(s) |
267 -- We need to ensure that outgoing stanzas have the jabber:client xmlns |
263 -- We need to ensure that outgoing stanzas have the jabber:client xmlns |
268 if s.attr and not s.attr.xmlns then |
264 if s.attr and not s.attr.xmlns then |