aboutsummaryrefslogtreecommitdiff
path: root/src/mod_stream_mgmt.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_stream_mgmt.erl')
-rw-r--r--src/mod_stream_mgmt.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mod_stream_mgmt.erl b/src/mod_stream_mgmt.erl
index 6ca5a8b39..a8aeaaef0 100644
--- a/src/mod_stream_mgmt.erl
+++ b/src/mod_stream_mgmt.erl
@@ -664,6 +664,8 @@ inherit_session_state(#{user := U, server := S,
exit:{normal, _} ->
{error, <<"Previous session PID has exited">>};
exit:{timeout, _} ->
+ ejabberd_sm:close_session(OldSID, U, S, R),
+ ejabberd_c2s:stop(OldPID),
{error, <<"Session state copying timed out">>}
end
end;
@@ -733,7 +735,9 @@ bounce_message_queue() ->
need_to_enqueue(State, Pkt) when ?is_stanza(Pkt) ->
{not xmpp:get_meta(Pkt, mgmt_is_resent, false), State};
need_to_enqueue(#{mgmt_force_enqueue := true} = State, #xmlel{}) ->
- {true, maps:remove(mgmt_is_resent, State)};
+ State1 = maps:remove(mgmt_force_enqueue, State),
+ State2 = maps:remove(mgmt_is_resent, State1),
+ {true, State2};
need_to_enqueue(State, _) ->
{false, State}.