I wrote a small wildfire plugin that prevents roster modifications. The logic is : if packet = roster/set/incoming > set packet error = not allowed and throw packed rejected exception. What Spark does, is to pop-up the message of the packet rejected exception, but still removes the roster item from its list (of course , as the roster itself is intact, the list is restored on log off/on). Is that a bug, or intentional ? I think the list should stay also intact as the packet is rejected, nothing happened on the server and Spark knows that.