throw:Throw ->
Throw;
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
{error, get_certificates}
end;
false ->
throw:Throw ->
Throw;
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
{error, DomainName, get_certificate}
end.
throw:Throw ->
Throw;
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
{error, get_certificates}
end.
throw:Throw ->
Throw;
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
{error, list_certificates}
end;
false ->
end
catch
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
fail_format_certificate(DomainName)
end.
throw:Throw ->
Throw;
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
{error, revoke_certificate}
end.
throw:Throw ->
Throw;
?EX_RULE(E, R, St) ->
- ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, ?EX_STACK(St)]),
+ StackTrace = ?EX_STACK(St),
+ ?ERROR_MSG("Unknown ~p:~p, ~p", [E, R, StackTrace]),
{error, DomainName, saving}
end.
route(Packet) ->
try do_route(Packet)
catch ?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to route packet:~n~s~nReason = ~p",
- [xmpp:pp(Packet), {E, {R, ?EX_STACK(St)}}])
+ [xmpp:pp(Packet), {E, {R, StackTrace}}])
end.
-spec route_iq(iq(), function()) -> ok.
route(Packet) ->
try do_route(Packet)
catch ?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to route packet:~n~s~nReason = ~p",
- [xmpp:pp(Packet), {E, {R, ?EX_STACK(St)}}])
+ [xmpp:pp(Packet), {E, {R, StackTrace}}])
end.
-spec route(jid(), jid(), xmlel() | stanza()) -> ok.
catch _:{bad_node, _} ->
[];
?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to decode row from 'route' table:~n"
"Row = ~p~n"
"Domain = ~s~n"
"Reason = ~p",
- [Row, Domain, {E, {R, ?EX_STACK(St)}}]),
+ [Row, Domain, {E, {R, StackTrace}}]),
[]
end.
route(Packet) ->
try do_route(Packet)
catch ?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to route packet:~n~s~nReason = ~p",
- [xmpp:pp(Packet), {E, {R, ?EX_STACK(St)}}])
+ [xmpp:pp(Packet), {E, {R, StackTrace}}])
end.
clean_temporarily_blocked_table() ->
Packet1 ->
try do_route(Packet1), ok
catch ?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to route packet:~n~s~nReason = ~p",
[xmpp:pp(Packet1),
- {E, {R, ?EX_STACK(St)}}])
+ {E, {R, StackTrace}}])
end
end.
put(?NESTING_KEY, ?TOP_LEVEL_TXN),
outer_transaction(F, NRestarts - 1, Reason);
?EX_RULE(throw, {aborted, Reason}, Stack) when NRestarts =:= 0 ->
+ StackTrace = ?EX_STACK(Stack),
?ERROR_MSG("SQL transaction restarts exceeded~n** "
"Restarts: ~p~n** Last abort reason: "
"~p~n** Stacktrace: ~p~n** When State "
"== ~p",
[?MAX_TRANSACTION_RESTARTS, Reason,
- ?EX_STACK(Stack), get(?STATE_KEY)]),
+ StackTrace, get(?STATE_KEY)]),
sql_query_internal([<<"rollback;">>]),
{aborted, Reason};
?EX_RULE(exit, Reason, _) ->
exit:{normal, _} ->
{error, <<"terminated unexpectedly">>};
?EX_RULE(Class, Reason, Stack) ->
+ StackTrace = ?EX_STACK(Stack),
?ERROR_MSG("Internal error while processing SQL query: ~p",
- [{Class, Reason, ?EX_STACK(Stack)}]),
+ [{Class, Reason, StackTrace}]),
{error, <<"internal error">>}
end,
check_error(Res, Query);
[(SQLQuery#sql_query.format_res)(Row)]
catch
?EX_RULE(Class, Reason, Stack) ->
+ StackTrace = ?EX_STACK(Stack),
?ERROR_MSG("Error while processing "
"SQL query result: ~p~n"
"row: ~p",
- [{Class, Reason, ?EX_STACK(Stack)}, Row]),
+ [{Class, Reason, StackTrace}, Row]),
[]
end
end, Rows),
ignore ->
ok
catch ?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to process iq:~n~s~nReason = ~p",
- [xmpp:pp(IQ), {E, {R, ?EX_STACK(St)}}]),
+ [xmpp:pp(IQ), {E, {R, StackTrace}}]),
Txt = ?T("Module failed to handle the query"),
Err = xmpp:err_internal_server_error(Txt, IQ#iq.lang),
ejabberd_router:route_error(IQ, Err)
?DEBUG("Bad Request: ~p", [_Err]),
badrequest_response(<<"Invalid JSON input">>);
?EX_RULE(_Class, _Error, Stack) ->
- ?DEBUG("Bad Request: ~p ~p", [_Error, ?EX_STACK(Stack)]),
+ StackTrace = ?EX_STACK(Stack),
+ ?DEBUG("Bad Request: ~p ~p", [_Error, StackTrace]),
badrequest_response()
end;
process([Call], #request{method = 'GET', q = Data, ip = {IP, _}} = Req) ->
throw:{error, unknown_command} ->
json_format({404, 44, <<"Command not found.">>});
?EX_RULE(_, _Error, Stack) ->
- ?DEBUG("Bad Request: ~p ~p", [_Error, ?EX_STACK(Stack)]),
+ StackTrace = ?EX_STACK(Stack),
+ ?DEBUG("Bad Request: ~p ~p", [_Error, StackTrace]),
badrequest_response()
end;
process([_Call], #request{method = 'OPTIONS', data = <<>>}) ->
throw:Msg when is_list(Msg); is_binary(Msg) ->
{400, iolist_to_binary(Msg)};
?EX_RULE(Class, Error, Stack) ->
+ StackTrace = ?EX_STACK(Stack),
?ERROR_MSG("REST API Error: "
"~s(~p) -> ~p:~p ~p",
[Call, hide_sensitive_args(Args),
- Class, Error, ?EX_STACK(Stack)]),
+ Class, Error, StackTrace]),
{500, <<"internal_error">>}
end.
end,
mod_muc:room_destroyed(Host, Room, self(), LServer)
catch ?EX_RULE(E, R, St) ->
- mod_muc:room_destroyed(Host, Room, self(), LServer),
- ?ERROR_MSG("Got exception on room termination: ~p", [{E, {R, ?EX_STACK(St)}}])
+ StackTrace = ?EX_STACK(St),
+ mod_muc:room_destroyed(Host, Room, self(), LServer),
+ ?ERROR_MSG("Got exception on room termination: ~p", [{E, {R, StackTrace}}])
end,
ok.
SD1
end
catch ?EX_RULE(E, R, St) ->
- FromSuffix = case UJID of
- #jid{} ->
- JidString = jid:encode(UJID),
- <<" from ", JidString/binary>>;
- undefined ->
- <<"">>
- end,
- ?ERROR_MSG("Failed to set item ~p~s: ~p",
- [Item, FromSuffix, {E, {R, ?EX_STACK(St)}}]),
+ StackTrace = ?EX_STACK(St),
+ FromSuffix = case UJID of
+ #jid{} ->
+ JidString = jid:encode(UJID),
+ <<" from ", JidString/binary>>;
+ undefined ->
+ <<"">>
+ end,
+ ?ERROR_MSG("Failed to set item ~p~s: ~p",
+ [Item, FromSuffix, {E, {R, StackTrace}}]),
{error, xmpp:err_internal_server_error()}
end.
ver = Version}
end)
catch ?EX_RULE(E, R, St) ->
+ StackTrace = ?EX_STACK(St),
?ERROR_MSG("Failed to process roster get for ~s: ~p",
- [jid:encode(To), {E, {R, ?EX_STACK(St)}}]),
+ [jid:encode(To), {E, {R, StackTrace}}]),
Txt = ?T("Roster module has failed"),
xmpp:make_error(IQ, xmpp:err_internal_server_error(Txt, Lang))
end.