24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-02 21:17:12 +02:00

Refactor publish_item conditions (#2267)

This commit is contained in:
Christophe Romain 2018-03-16 17:17:53 +01:00
parent ddc29d42de
commit d8f9219b4f

View File

@ -1112,7 +1112,7 @@ iq_pubsub(Host, Access, #iq{from = From, type = IQType, lang = Lang,
Payload, PubOpts, Access) Payload, PubOpts, Access)
end; end;
[] -> [] ->
{error, extended_error(xmpp:err_bad_request(), err_item_required())}; publish_item(Host, ServerHost, Node, From, <<>>, [], [], Access);
_ -> _ ->
{error, extended_error(xmpp:err_bad_request(), err_invalid_payload())} {error, extended_error(xmpp:err_bad_request(), err_invalid_payload())}
end; end;
@ -1785,19 +1785,15 @@ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload, PubOpts, Access
PayloadSize > PayloadMaxSize -> PayloadSize > PayloadMaxSize ->
{error, extended_error(xmpp:err_not_acceptable(), {error, extended_error(xmpp:err_not_acceptable(),
err_payload_too_big())}; err_payload_too_big())};
(PayloadCount == 0) and (Payload == []) -> (DeliverPayloads or PersistItems) and (PayloadCount == 0) ->
{error, extended_error(xmpp:err_bad_request(),
err_payload_required())};
(PayloadCount > 1) or (PayloadCount == 0) ->
{error, extended_error(xmpp:err_bad_request(),
err_invalid_payload())};
(DeliverPayloads == false) and (PersistItems == false) and
(PayloadSize > 0) ->
{error, extended_error(xmpp:err_bad_request(),
err_item_forbidden())};
((DeliverPayloads == true) or (PersistItems == true)) and (PayloadSize == 0) ->
{error, extended_error(xmpp:err_bad_request(), {error, extended_error(xmpp:err_bad_request(),
err_item_required())}; err_item_required())};
(DeliverPayloads or PersistItems) and (PayloadCount > 1) ->
{error, extended_error(xmpp:err_bad_request(),
err_invalid_payload())};
(not DeliverPayloads) and (PayloadCount > 0) ->
{error, extended_error(xmpp:err_bad_request(),
err_item_forbidden())};
true -> true ->
node_call(Host, Type, publish_item, node_call(Host, Type, publish_item,
[Nidx, Publisher, PublishModel, MaxItems, ItemId, Payload, PubOpts]) [Nidx, Publisher, PublishModel, MaxItems, ItemId, Payload, PubOpts])