summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2015-10-15 09:48:29 (GMT)
committerTobias Markmann <tm@ayena.de>2015-10-15 11:44:29 (GMT)
commit582ca915b5b82ada46d1183a7b882455ee01b7b1 (patch)
tree27e0fdbf3bf457763003baf838eaab82fd6adf19 /Swiften
parentac6cf9659718a18b1ea22f72dbf0cdb64cbf9a24 (diff)
downloadswift-582ca915b5b82ada46d1183a7b882455ee01b7b1.zip
swift-582ca915b5b82ada46d1183a7b882455ee01b7b1.tar.bz2
Only bind full JID to ChatController on non-empty or typing messages
With this commit a ChatController is only bound to a full JID of a contact, if the incoming message of the contact has a non-empty body or is a 'typing' chat state notification. This avoids random binding to an arbitrary resource of a contact, that has multiple online resources and responds with delivery receipts. Test-Information: Tested with a conversation of a one resource account (A) to a two resource account (B). Sending two messages to B, the first used to go to both resources, then A would bind to the full JID and the second message would only go to one resource. With this fix all messages go to both resources, i.e. are send to the bare JID, until one resource of B replies. This binds the controller at A to the full JID of the reply of B. Change-Id: I8d9321a4226ab798e1196351ad087990d5dff8c3
Diffstat (limited to 'Swiften')
-rw-r--r--Swiften/Elements/ChatState.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/Swiften/Elements/ChatState.h b/Swiften/Elements/ChatState.h
index a7a8b1d..5f0bb9b 100644
--- a/Swiften/Elements/ChatState.h
+++ b/Swiften/Elements/ChatState.h
@@ -14,6 +14,9 @@
namespace Swift {
class SWIFTEN_API ChatState : public Payload {
public:
+ typedef boost::shared_ptr<ChatState> ref;
+
+ public:
enum ChatStateType {Active, Composing, Paused, Inactive, Gone};
ChatState(ChatStateType state = Active) {
state_ = state;