diff options
author | Badlop <badlop@process-one.net> | 2009-02-25 21:17:14 +0000 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2009-02-25 21:17:14 +0000 |
commit | fd26056d01884b5210520bebad2d3930a693021e (patch) | |
tree | d06177a7aaa67070e3d9438a92bd2850211ada82 /src | |
parent | * src/ejabberd_listener.erl: Fix report message of 'undef' error (diff) |
* src/mod_pubsub/mod_pubsub.erl: Fix incorrect implementation of
Pubsub payload requirements (thanks to Andy Skelton)(EJAB-823)
SVN Revision: 1921
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_pubsub/mod_pubsub.erl | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index f4781b2f3..f2bf6122d 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -1492,6 +1492,8 @@ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload) -> PublishFeature = lists:member("publish", Features), PublishModel = get_option(Options, publish_model), MaxItems = max_items(Options), + DeliverPayloads = get_option(Options, deliver_payloads), + PersistItems = get_option(Options, persist_items), PayloadCount = payload_xmlelements(Payload), PayloadSize = size(term_to_binary(Payload)), PayloadMaxSize = get_option(Options, max_payload_size), @@ -1510,11 +1512,11 @@ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload) -> Payload == "" -> %% Publisher attempts to publish to payload node with no payload {error, extended_error(?ERR_BAD_REQUEST, "payload-required")}; - (MaxItems == 0) and (PayloadSize > 0) -> - % Publisher attempts to publish to transient notification node with item + (DeliverPayloads == 0) and (PersistItems == 0) and (PayloadSize > 0) -> + %% Publisher attempts to publish to transient notification node with item {error, extended_error(?ERR_BAD_REQUEST, "item-forbidden")}; - (MaxItems > 0) and (PayloadSize == 0) -> - % Publisher attempts to publish to persistent node with no item + ((DeliverPayloads == 1) or (PersistItems == 1)) and (PayloadSize == 0) -> + %% Publisher attempts to publish to persistent node with no item {error, extended_error(?ERR_BAD_REQUEST, "item-required")}; true -> node_call(Type, publish_item, [Host, Node, Publisher, PublishModel, MaxItems, ItemId, Payload]) |