Mercurial > prosody-hg
comparison plugins/mod_s2s/mod_s2s.lua @ 6690:b2e89583d6e6
Merge 0.10->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 13 May 2015 22:33:40 +0200 |
| parents | 42fdc8dddf04 3f05b255937f |
| children | c314e9142e9d |
comparison
equal
deleted
inserted
replaced
| 6679:96e034508978 | 6690:b2e89583d6e6 |
|---|---|
| 167 end, -1); | 167 end, -1); |
| 168 end | 168 end |
| 169 | 169 |
| 170 -- Stream is authorised, and ready for normal stanzas | 170 -- Stream is authorised, and ready for normal stanzas |
| 171 function mark_connected(session) | 171 function mark_connected(session) |
| 172 local sendq, send = session.sendq, session.sends2s; | 172 local sendq = session.sendq; |
| 173 | 173 |
| 174 local from, to = session.from_host, session.to_host; | 174 local from, to = session.from_host, session.to_host; |
| 175 | 175 |
| 176 session.log("info", "%s s2s connection %s->%s complete", session.direction:gsub("^.", string.upper), from, to); | 176 session.log("info", "%s s2s connection %s->%s complete", session.direction:gsub("^.", string.upper), from, to); |
| 177 | 177 |
| 190 end | 190 end |
| 191 | 191 |
| 192 if session.direction == "outgoing" then | 192 if session.direction == "outgoing" then |
| 193 if sendq then | 193 if sendq then |
| 194 session.log("debug", "sending %d queued stanzas across new outgoing connection to %s", #sendq, session.to_host); | 194 session.log("debug", "sending %d queued stanzas across new outgoing connection to %s", #sendq, session.to_host); |
| 195 local send = session.sends2s; | |
| 195 for i, data in ipairs(sendq) do | 196 for i, data in ipairs(sendq) do |
| 196 send(data[1]); | 197 send(data[1]); |
| 197 sendq[i] = nil; | 198 sendq[i] = nil; |
| 198 end | 199 end |
| 199 session.sendq = nil; | 200 session.sendq = nil; |
| 259 local stream_callbacks = { default_ns = "jabber:server", handlestanza = core_process_stanza }; | 260 local stream_callbacks = { default_ns = "jabber:server", handlestanza = core_process_stanza }; |
| 260 | 261 |
| 261 local xmlns_xmpp_streams = "urn:ietf:params:xml:ns:xmpp-streams"; | 262 local xmlns_xmpp_streams = "urn:ietf:params:xml:ns:xmpp-streams"; |
| 262 | 263 |
| 263 function stream_callbacks.streamopened(session, attr) | 264 function stream_callbacks.streamopened(session, attr) |
| 264 local send = session.sends2s; | |
| 265 | |
| 266 session.version = tonumber(attr.version) or 0; | 265 session.version = tonumber(attr.version) or 0; |
| 267 | 266 |
| 268 -- TODO: Rename session.secure to session.encrypted | 267 -- TODO: Rename session.secure to session.encrypted |
| 269 if session.secure == false then | 268 if session.secure == false then |
| 270 session.secure = true; | 269 session.secure = true; |
| 343 return; | 342 return; |
| 344 end | 343 end |
| 345 end | 344 end |
| 346 | 345 |
| 347 session:open_stream(session.to_host, session.from_host) | 346 session:open_stream(session.to_host, session.from_host) |
| 347 session.notopen = nil; | |
| 348 if session.version >= 1.0 then | 348 if session.version >= 1.0 then |
| 349 local features = st.stanza("stream:features"); | 349 local features = st.stanza("stream:features"); |
| 350 | 350 |
| 351 if to then | 351 if to then |
| 352 hosts[to].events.fire_event("s2s-stream-features", { origin = session, features = features }); | 352 hosts[to].events.fire_event("s2s-stream-features", { origin = session, features = features }); |
| 353 else | 353 else |
| 354 (session.log or log)("warn", "No 'to' on stream header from %s means we can't offer any features", from or session.ip or "unknown host"); | 354 (session.log or log)("warn", "No 'to' on stream header from %s means we can't offer any features", from or session.ip or "unknown host"); |
| 355 end | 355 end |
| 356 | 356 |
| 357 log("debug", "Sending stream features: %s", tostring(features)); | 357 log("debug", "Sending stream features: %s", tostring(features)); |
| 358 send(features); | 358 session.sends2s(features); |
| 359 end | 359 end |
| 360 session.notopen = nil; | |
| 361 elseif session.direction == "outgoing" then | 360 elseif session.direction == "outgoing" then |
| 362 session.notopen = nil; | 361 session.notopen = nil; |
| 363 if not attr.id then | 362 if not attr.id then |
| 364 log("error", "Stream response did not give us a stream id!"); | 363 log("error", "Stream response did not give us a stream id!"); |
| 365 session:close({ condition = "undefined-condition", text = "Missing stream ID" }); | 364 session:close({ condition = "undefined-condition", text = "Missing stream ID" }); |
