diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-01-21 00:14:56 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-01-21 00:14:56 +0100 |
commit | 14e771d8714038320cfb1c9b562cf4bf11f8691c (patch) | |
tree | 2074eb3fc487b005ab3afea08a185e8e965c498c /src | |
parent | Add stanza-id to every archived message (#1477) (diff) |
mod_pubsub: Fix last item cache for multiple hosts
Don't let the last item cache intermix PubSub items of different virtual
domains.
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_pubsub.erl | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl index eba2cab29..93c9abe7a 100644 --- a/src/mod_pubsub.erl +++ b/src/mod_pubsub.erl @@ -177,7 +177,7 @@ -type(pubsubLastItem() :: #pubsub_last_item{ - nodeid :: mod_pubsub:nodeIdx(), + nodeid :: {binary(), mod_pubsub:nodeIdx()}, itemid :: mod_pubsub:itemId(), creation :: {erlang:timestamp(), ljid()}, payload :: mod_pubsub:payload() @@ -3426,7 +3426,7 @@ set_cached_item({_, ServerHost, _}, Nidx, ItemId, Publisher, Payload) -> set_cached_item(ServerHost, Nidx, ItemId, Publisher, Payload); set_cached_item(Host, Nidx, ItemId, Publisher, Payload) -> case is_last_item_cache_enabled(Host) of - true -> mnesia:dirty_write({pubsub_last_item, Nidx, ItemId, + true -> mnesia:dirty_write({pubsub_last_item, {Host, Nidx}, ItemId, {p1_time_compat:timestamp(), jid:tolower(jid:remove_resource(Publisher))}, Payload}); _ -> ok @@ -3437,7 +3437,7 @@ unset_cached_item({_, ServerHost, _}, Nidx) -> unset_cached_item(ServerHost, Nidx); unset_cached_item(Host, Nidx) -> case is_last_item_cache_enabled(Host) of - true -> mnesia:dirty_delete({pubsub_last_item, Nidx}); + true -> mnesia:dirty_delete({pubsub_last_item, {Host, Nidx}}); _ -> ok end. @@ -3447,8 +3447,8 @@ get_cached_item({_, ServerHost, _}, Nidx) -> get_cached_item(Host, Nidx) -> case is_last_item_cache_enabled(Host) of true -> - case mnesia:dirty_read({pubsub_last_item, Nidx}) of - [#pubsub_last_item{itemid = ItemId, creation = Creation, payload = Payload}] -> + case mnesia:dirty_read({pubsub_last_item, {Host, Nidx}}) of + [#pubsub_last_item{itemid = {Host, ItemId}, creation = Creation, payload = Payload}] -> % [{pubsub_last_item, Nidx, ItemId, Creation, % Payload}] -> #pubsub_item{itemid = {ItemId, Nidx}, |