diff options
author | Tobias Markmann <tm@ayena.de> | 2015-10-15 09:48:29 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2015-10-15 11:44:29 (GMT) |
commit | 582ca915b5b82ada46d1183a7b882455ee01b7b1 (patch) | |
tree | 27e0fdbf3bf457763003baf838eaab82fd6adf19 /Swiften | |
parent | ac6cf9659718a18b1ea22f72dbf0cdb64cbf9a24 (diff) | |
download | swift-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.h | 3 |
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; |