aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_sql.erl2
-rw-r--r--src/mod_push.erl9
2 files changed, 9 insertions, 2 deletions
diff --git a/src/ejabberd_sql.erl b/src/ejabberd_sql.erl
index c891e7aa8..a02aece4d 100644
--- a/src/ejabberd_sql.erl
+++ b/src/ejabberd_sql.erl
@@ -524,6 +524,7 @@ outer_transaction(F, NRestarts, _Reason) ->
catch
?EX_RULE(throw, {aborted, Reason}, _) when NRestarts > 0 ->
sql_query_internal([<<"rollback;">>]),
+ put(?NESTING_KEY, ?TOP_LEVEL_TXN),
outer_transaction(F, NRestarts - 1, Reason);
?EX_RULE(throw, {aborted, Reason}, Stack) when NRestarts =:= 0 ->
?ERROR_MSG("SQL transaction restarts exceeded~n** "
@@ -610,6 +611,7 @@ sql_query_internal(#sql_query{} = Query) ->
check_error(Res, Query);
sql_query_internal(F) when is_function(F) ->
case catch execute_fun(F) of
+ {aborted, Reason} -> {error, Reason};
{'EXIT', Reason} -> {error, Reason};
Res -> Res
end;
diff --git a/src/mod_push.erl b/src/mod_push.erl
index a6e871375..2cf34f65f 100644
--- a/src/mod_push.erl
+++ b/src/mod_push.erl
@@ -682,8 +682,13 @@ get_body_text(#message{body = Body} = Msg) ->
end.
-spec body_is_encrypted(message()) -> boolean().
-body_is_encrypted(#message{sub_els = SubEls}) ->
- lists:keyfind(<<"encrypted">>, #xmlel.name, SubEls) /= false.
+body_is_encrypted(#message{sub_els = MsgEls}) ->
+ case lists:keyfind(<<"encrypted">>, #xmlel.name, MsgEls) of
+ #xmlel{children = EncEls} ->
+ lists:keyfind(<<"payload">>, #xmlel.name, EncEls) /= false;
+ false ->
+ false
+ end.
-spec inspect_error(iq()) -> {atom(), binary()}.
inspect_error(IQ) ->