aboutsummaryrefslogtreecommitdiff
path: root/libdino/src
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2025-06-13 19:38:49 +0200
committerfiaxh <git@lightrise.org>2025-06-13 19:40:09 +0200
commit915b18789f002fa8f4c50fe1e626d34cc47c5c9b (patch)
tree34fc929c3dd7543cafa971e6b86ac2d2c5b3c15d /libdino/src
parent2e6454a92e85e87e17ce88924155d825b2b6eca3 (diff)
Disregard SFS fallback messages even without source attachment given a full-body fallback indication
Diffstat (limited to 'libdino/src')
-rw-r--r--libdino/src/entity/message.vala2
-rw-r--r--libdino/src/service/stateless_file_sharing.vala6
-rw-r--r--libdino/src/util/send_message.vala5
3 files changed, 10 insertions, 3 deletions
diff --git a/libdino/src/entity/message.vala b/libdino/src/entity/message.vala
index 7e15cfe4..4de17125 100644
--- a/libdino/src/entity/message.vala
+++ b/libdino/src/entity/message.vala
@@ -212,7 +212,7 @@ public class Message : Object {
var fallbacks = new ArrayList<Xep.FallbackIndication.Fallback>();
foreach (string ns_uri in fallbacks_by_ns.keys) {
- fallbacks.add(new Xep.FallbackIndication.Fallback(ns_uri, fallbacks_by_ns[ns_uri].to_array()));
+ fallbacks.add(new Xep.FallbackIndication.Fallback(ns_uri, fallbacks_by_ns[ns_uri]));
}
this.fallbacks = fallbacks;
this.markups = markups;
diff --git a/libdino/src/service/stateless_file_sharing.vala b/libdino/src/service/stateless_file_sharing.vala
index 9d3c53ab..15e1ddfe 100644
--- a/libdino/src/service/stateless_file_sharing.vala
+++ b/libdino/src/service/stateless_file_sharing.vala
@@ -156,6 +156,12 @@ public class Dino.StatelessFileSharing : StreamInteractionModule, Object {
return true;
}
}
+
+ // Don't process messages that are fallback for legacy clients
+ if (Xep.StatelessFileSharing.is_sfs_fallback_message(stanza)) {
+ return true;
+ }
+
return false;
}
}
diff --git a/libdino/src/util/send_message.vala b/libdino/src/util/send_message.vala
index 8312cf17..c320bf7b 100644
--- a/libdino/src/util/send_message.vala
+++ b/libdino/src/util/send_message.vala
@@ -26,9 +26,10 @@ namespace Dino {
out_message.body = fallback + out_message.body;
// Store fallback location
- var fallback_location = new Xep.FallbackIndication.FallbackLocation.partial_body(0, (int)fallback.char_count());
+ var fallback_locations = new ArrayList<Xep.FallbackIndication.FallbackLocation>();
+ fallback_locations.add(new Xep.FallbackIndication.FallbackLocation.partial_body(0, (int)fallback.char_count()));
var fallback_list = new ArrayList<Xep.FallbackIndication.Fallback>();
- fallback_list.add(new Xep.FallbackIndication.Fallback(Xep.Replies.NS_URI, new Xep.FallbackIndication.FallbackLocation[] { fallback_location }));
+ fallback_list.add(new Xep.FallbackIndication.Fallback(Xep.Replies.NS_URI, fallback_locations));
out_message.set_fallbacks(fallback_list);
// Adjust markups to new prefix