25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-28 16:34:13 +01:00

mod_client_state: Let other modules filter stanzas

Don't stop execution of the 'csi_filter_stanza' hook if mod_client_state
won't queue the stanza.
This commit is contained in:
Holger Weiss 2016-08-06 13:36:27 +02:00
parent 91e26fbf7a
commit b62aa3d2dc

View File

@ -205,7 +205,7 @@ filter_pep({C2SState, _OutStanzas} = Acc, Host, To,
filter_pep(Acc, _Host, _To, _Stanza) -> Acc. filter_pep(Acc, _Host, _To, _Stanza) -> Acc.
-spec filter_other({term(), [xmlel()]}, binary(), jid(), xmlel()) -spec filter_other({term(), [xmlel()]}, binary(), jid(), xmlel())
-> {stop, {term(), [xmlel()]}}. -> {term(), [xmlel()]}.
filter_other({C2SState, _OutStanzas}, Host, To, Stanza) -> filter_other({C2SState, _OutStanzas}, Host, To, Stanza) ->
?DEBUG("Won't add stanza for ~s to CSI queue", [jid:to_string(To)]), ?DEBUG("Won't add stanza for ~s to CSI queue", [jid:to_string(To)]),
@ -250,7 +250,7 @@ queue_add(Type, Stanza, Host, C2SState) ->
{stop, {NewState, []}} {stop, {NewState, []}}
end. end.
-spec queue_take(xmlel(), binary(), term()) -> {stop, {term(), [xmlel()]}}. -spec queue_take(xmlel(), binary(), term()) -> {term(), [xmlel()]}.
queue_take(Stanza, Host, C2SState) -> queue_take(Stanza, Host, C2SState) ->
From = fxml:get_tag_attr_s(<<"from">>, Stanza), From = fxml:get_tag_attr_s(<<"from">>, Stanza),
@ -260,7 +260,7 @@ queue_take(Stanza, Host, C2SState) ->
U == LUser andalso S == LServer U == LUser andalso S == LServer
end, get_queue(C2SState)), end, get_queue(C2SState)),
NewState = set_queue(Rest, C2SState), NewState = set_queue(Rest, C2SState),
{stop, {NewState, get_stanzas(Selected, Host) ++ [Stanza]}}. {NewState, get_stanzas(Selected, Host) ++ [Stanza]}.
-spec set_queue(csi_queue(), term()) -> term(). -spec set_queue(csi_queue(), term()) -> term().