mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
core.s2smanager: Don't remove unrelated session on close of bidi session
Normally with bidi, any outgoing connection should be the same as the incoming, hence when closing a bidi connection it should be removed as a route to the remote server. However it is not guaranteed, a remote bidi-capable server might have decided to open a new connection for some reason. This can lead to a situation where there are two bidi connections, and the s2sout route is a locally initiated s2sout connection. In this case, such a s2sout connection should be kept. Noticed in a rare case where bidi has just been enabled on a running server, and something establishes new connections immediately when a connection is closed.
This commit is contained in:
parent
1261dfba9f
commit
814817ebf2
1 changed files with 1 additions and 1 deletions
|
@ -94,7 +94,7 @@ local function destroy_session(session, reason, bounce_reason)
|
|||
hosts[session.from_host].s2sout[session.to_host] = nil;
|
||||
session:bounce_sendq(bounce_reason or reason);
|
||||
elseif session.direction == "incoming" then
|
||||
if session.outgoing then
|
||||
if session.outgoing and hosts[session.to_host].s2sout[session.from_host] == session then
|
||||
hosts[session.to_host].s2sout[session.from_host] = nil;
|
||||
end
|
||||
incoming_s2s[session] = nil;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue