Mercurial > prosody-hg
comparison plugins/mod_s2s.lua @ 11678:f90a337d81a8
mod_s2s: Remove connection timeout once it's no longer needed
Reduces the number of left-over timers to handle after many s2s
connections were started, leaving only the ones related to incomplete
connections.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 13 Jul 2021 15:04:34 +0200 |
| parents | 7f6c816a2c09 |
| children | 7843f1ca3b33 |
comparison
equal
deleted
inserted
replaced
| 11677:98bcc19361db | 11678:f90a337d81a8 |
|---|---|
| 15 local tostring, type = tostring, type; | 15 local tostring, type = tostring, type; |
| 16 local t_insert = table.insert; | 16 local t_insert = table.insert; |
| 17 local traceback = debug.traceback; | 17 local traceback = debug.traceback; |
| 18 | 18 |
| 19 local add_task = require "util.timer".add_task; | 19 local add_task = require "util.timer".add_task; |
| 20 local stop_timer = require "util.timer".stop; | |
| 20 local st = require "util.stanza"; | 21 local st = require "util.stanza"; |
| 21 local initialize_filters = require "util.filters".initialize; | 22 local initialize_filters = require "util.filters".initialize; |
| 22 local nameprep = require "util.encodings".stringprep.nameprep; | 23 local nameprep = require "util.encodings".stringprep.nameprep; |
| 23 local new_xmpp_stream = require "util.xmppstream".new; | 24 local new_xmpp_stream = require "util.xmppstream".new; |
| 24 local s2s_new_incoming = require "core.s2smanager".new_incoming; | 25 local s2s_new_incoming = require "core.s2smanager".new_incoming; |
| 303 sendq[i] = nil; | 304 sendq[i] = nil; |
| 304 end | 305 end |
| 305 session.sendq = nil; | 306 session.sendq = nil; |
| 306 end | 307 end |
| 307 end | 308 end |
| 309 | |
| 310 if session.connect_timeout then | |
| 311 stop_timer(session.connect_timeout); | |
| 312 session.connect_timeout = nil; | |
| 313 end | |
| 308 end | 314 end |
| 309 | 315 |
| 310 function make_authenticated(event) | 316 function make_authenticated(event) |
| 311 local session, host = event.session, event.host; | 317 local session, host = event.session, event.host; |
| 312 if not session.secure then | 318 if not session.secure then |
| 610 session.log("info", "%s s2s stream %s->%s closed: %s", session.direction:gsub("^.", string.upper), | 616 session.log("info", "%s s2s stream %s->%s closed: %s", session.direction:gsub("^.", string.upper), |
| 611 session.from_host or "(unknown host)", session.to_host or "(unknown host)", reason or "stream closed"); | 617 session.from_host or "(unknown host)", session.to_host or "(unknown host)", reason or "stream closed"); |
| 612 | 618 |
| 613 conn:resume_writes(); | 619 conn:resume_writes(); |
| 614 | 620 |
| 621 if session.connect_timeout then | |
| 622 stop_timer(session.connect_timeout); | |
| 623 session.connect_timeout = nil; | |
| 624 end | |
| 625 | |
| 615 -- Authenticated incoming stream may still be sending us stanzas, so wait for </stream:stream> from remote | 626 -- Authenticated incoming stream may still be sending us stanzas, so wait for </stream:stream> from remote |
| 616 if reason == nil and not session.notopen and session.direction == "incoming" then | 627 if reason == nil and not session.notopen and session.direction == "incoming" then |
| 617 add_task(stream_close_timeout, function () | 628 add_task(stream_close_timeout, function () |
| 618 if not session.destroyed then | 629 if not session.destroyed then |
| 619 session.log("warn", "Failed to receive a stream close response, closing connection anyway..."); | 630 session.log("warn", "Failed to receive a stream close response, closing connection anyway..."); |
| 704 return handlestanza(session, stanza); | 715 return handlestanza(session, stanza); |
| 705 end | 716 end |
| 706 | 717 |
| 707 module:fire_event("s2s-created", { session = session }); | 718 module:fire_event("s2s-created", { session = session }); |
| 708 | 719 |
| 709 add_task(connect_timeout, function () | 720 session.connect_timeout = add_task(connect_timeout, function () |
| 710 if session.type == "s2sin" or session.type == "s2sout" then | 721 if session.type == "s2sin" or session.type == "s2sout" then |
| 711 return; -- Ok, we're connected | 722 return; -- Ok, we're connected |
| 712 elseif session.type == "s2s_destroyed" then | 723 elseif session.type == "s2s_destroyed" then |
| 713 return; -- Session already destroyed | 724 return; -- Session already destroyed |
| 714 end | 725 end |
