aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2019-02-09 13:58:16 +0100
committerfiaxh <git@lightrise.org>2019-02-17 16:44:17 +0100
commit6ffa82d6223ce46d7ef0e8e145db4892dfe67f23 (patch)
tree065e6922d9c1ffa9642ddd08f94fa87b58e9139a /libdino/src/service
parente55fb9cca5a638f29d8c7c5bfa85c6d10d69c987 (diff)
downloaddino-6ffa82d6223ce46d7ef0e8e145db4892dfe67f23.tar.gz
dino-6ffa82d6223ce46d7ef0e8e145db4892dfe67f23.zip
Do not ignore encrypted messages without a body tag
Fixes #473
Diffstat (limited to 'libdino/src/service')
-rw-r--r--libdino/src/service/conversation_manager.vala2
-rw-r--r--libdino/src/service/message_processor.vala17
2 files changed, 15 insertions, 4 deletions
diff --git a/libdino/src/service/conversation_manager.vala b/libdino/src/service/conversation_manager.vala
index c72500b4..1965e13d 100644
--- a/libdino/src/service/conversation_manager.vala
+++ b/libdino/src/service/conversation_manager.vala
@@ -120,7 +120,7 @@ public class ConversationManager : StreamInteractionModule, Object {
private class MessageListener : Dino.MessageListener {
- public string[] after_actions_const = new string[]{ "DEDUPLICATE" };
+ public string[] after_actions_const = new string[]{ "DEDUPLICATE", "FILTER_EMPTY" };
public override string action_group { get { return "MANAGER"; } }
public override string[] after_actions { get { return after_actions_const; } }
diff --git a/libdino/src/service/message_processor.vala b/libdino/src/service/message_processor.vala
index f7f13a40..758d9139 100644
--- a/libdino/src/service/message_processor.vala
+++ b/libdino/src/service/message_processor.vala
@@ -34,6 +34,7 @@ public class MessageProcessor : StreamInteractionModule, Object {
if (state == ConnectionManager.ConnectionState.CONNECTED) send_unsent_messages(account);
});
received_pipeline.connect(new DeduplicateMessageListener(db));
+ received_pipeline.connect(new FilterMessageListener());
received_pipeline.connect(new StoreMessageListener(stream_interactor));
received_pipeline.connect(new MamMessageListener(stream_interactor));
received_pipeline.connect(new SlackMessageListener());
@@ -74,8 +75,6 @@ public class MessageProcessor : StreamInteractionModule, Object {
}
private async void on_message_received(Account account, Xmpp.MessageStanza message_stanza) {
- if (message_stanza.body == null) return;
-
Entities.Message message = yield parse_message_stanza(account, message_stanza);
Conversation? conversation = stream_interactor.get_module(ConversationManager.IDENTITY).get_conversation_for_message(message);
@@ -178,9 +177,20 @@ public class MessageProcessor : StreamInteractionModule, Object {
}
}
- private class StoreMessageListener : MessageListener {
+ private class FilterMessageListener : MessageListener {
public string[] after_actions_const = new string[]{ "DEDUPLICATE", "DECRYPT" };
+ public override string action_group { get { return "FILTER_EMPTY"; } }
+ public override string[] after_actions { get { return after_actions_const; } }
+
+ public override async bool run(Entities.Message message, Xmpp.MessageStanza stanza, Conversation conversation) {
+ return (message.body == null);
+ }
+ }
+
+ private class StoreMessageListener : MessageListener {
+
+ public string[] after_actions_const = new string[]{ "DEDUPLICATE", "DECRYPT", "FILTER_EMPTY" };
public override string action_group { get { return "STORE"; } }
public override string[] after_actions { get { return after_actions_const; } }
@@ -191,6 +201,7 @@ public class MessageProcessor : StreamInteractionModule, Object {
}
public override async bool run(Entities.Message message, Xmpp.MessageStanza stanza, Conversation conversation) {
+ if (message.body == null) return true;
stream_interactor.get_module(MessageStorage.IDENTITY).add_message(message, conversation);
return false;
}