aboutsummaryrefslogtreecommitdiff
path: root/src/mod_pubsub.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_pubsub.erl')
-rw-r--r--src/mod_pubsub.erl14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl
index 95ab5ec4b..669422d15 100644
--- a/src/mod_pubsub.erl
+++ b/src/mod_pubsub.erl
@@ -1986,8 +1986,14 @@ get_items(Host, Node, From, SubId, SMaxItems, ItemIds, RSM) ->
Owners = node_owners_call(Host, Type, Nidx, O),
{PS, RG} = get_presence_and_roster_permissions(
Host, From, Owners, AccessModel, AllowedGroups),
- node_call(Host, Type, get_items,
- [Nidx, From, AccessModel, PS, RG, SubId, RSM])
+ case ItemIds of
+ [ItemId] ->
+ node_call(Host, Type, get_item,
+ [Nidx, ItemId, From, AccessModel, PS, RG, undefined]);
+ _ ->
+ node_call(Host, Type, get_items,
+ [Nidx, From, AccessModel, PS, RG, SubId, RSM])
+ end
end
end,
case transaction(Host, Node, Action, sync_dirty) of
@@ -2005,6 +2011,10 @@ get_items(Host, Node, From, SubId, SMaxItems, ItemIds, RSM) ->
#pubsub{items = #ps_items{node = Node,
items = itemsEls(lists:sublist(SendItems, MaxItems))},
rsm = RsmOut}};
+ {result, {_, Item}} ->
+ {result,
+ #pubsub{items = #ps_items{node = Node,
+ items = itemsEls([Item])}}};
Error ->
Error
end.