diff --git a/src/ejabberd_sql.erl b/src/ejabberd_sql.erl index 28103430a..970dece3f 100644 --- a/src/ejabberd_sql.erl +++ b/src/ejabberd_sql.erl @@ -580,8 +580,13 @@ sql_query_internal(#sql_query{} = Query) -> sqlite -> sqlite_sql_query(Query) end - catch - Class:Reason -> + catch exit:{timeout, _} -> + {error, <<"timed out">>}; + exit:{killed, _} -> + {error, <<"killed">>}; + exit:{normal, _} -> + {error, <<"terminated unexpectedly">>}; + Class:Reason -> ST = erlang:get_stacktrace(), ?ERROR_MSG("Internal error while processing SQL query: ~p", [{Class, Reason, ST}]), diff --git a/src/mod_stream_mgmt.erl b/src/mod_stream_mgmt.erl index 62124b22e..6fb601817 100644 --- a/src/mod_stream_mgmt.erl +++ b/src/mod_stream_mgmt.erl @@ -682,6 +682,8 @@ inherit_session_state(#{user := U, server := S, {error, <<"Previous session PID is dead">>}; exit:{normal, _} -> {error, <<"Previous session PID has exited">>}; + exit:{killed, _} -> + {error, <<"Previous session PID has been killed">>}; exit:{timeout, _} -> ejabberd_sm:close_session(OldSID, U, S, R), ejabberd_c2s:stop(OldPID),