aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0363_http_file_upload.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2020-04-23 13:53:44 +0200
committerfiaxh <git@lightrise.org>2020-04-24 14:18:24 +0200
commite7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc (patch)
treef1ef7e1d98723774a31374bfda7ab0804f38c6d4 /xmpp-vala/src/module/xep/0363_http_file_upload.vala
parent9661116d7814059fad7bf6a6ae5c0f684aed5bda (diff)
downloaddino-e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc.tar.gz
dino-e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc.zip
Handle entity hash in server features node, make ServiceDiscovery request_info/items async, add caching has_entity_feature
Diffstat (limited to 'xmpp-vala/src/module/xep/0363_http_file_upload.vala')
-rw-r--r--xmpp-vala/src/module/xep/0363_http_file_upload.vala23
1 files changed, 10 insertions, 13 deletions
diff --git a/xmpp-vala/src/module/xep/0363_http_file_upload.vala b/xmpp-vala/src/module/xep/0363_http_file_upload.vala
index d3faae2d..64fbbebc 100644
--- a/xmpp-vala/src/module/xep/0363_http_file_upload.vala
+++ b/xmpp-vala/src/module/xep/0363_http_file_upload.vala
@@ -105,25 +105,22 @@ public class Module : XmppStreamModule {
}
public override void detach(XmppStream stream) {
- stream.get_module(Bind.Module.IDENTITY).bound_to_resource.disconnect(query_availability);
+ stream.stream_negotiated.disconnect(query_availability);
}
public override string get_ns() { return NS_URI; }
public override string get_id() { return IDENTITY.id; }
- private void query_availability(XmppStream stream) {
- stream.get_module(ServiceDiscovery.Module.IDENTITY).request_info(stream, stream.remote_name, (stream, info_result) => {
- bool available = check_ns_in_info(stream, stream.remote_name, info_result);
- if (!available) {
- stream.get_module(ServiceDiscovery.Module.IDENTITY).request_items(stream, stream.remote_name, (stream, items_result) => {
- foreach (Xep.ServiceDiscovery.Item item in items_result.items) {
- stream.get_module(ServiceDiscovery.Module.IDENTITY).request_info(stream, item.jid, (stream, info_result) => {
- check_ns_in_info(stream, item.jid, info_result);
- });
- }
- });
+ private async void query_availability(XmppStream stream) {
+ ServiceDiscovery.InfoResult? info_result = yield stream.get_module(ServiceDiscovery.Module.IDENTITY).request_info(stream, stream.remote_name);
+ bool available = check_ns_in_info(stream, stream.remote_name, info_result);
+ if (!available) {
+ ServiceDiscovery.ItemsResult? items_result = yield stream.get_module(ServiceDiscovery.Module.IDENTITY).request_items(stream, stream.remote_name);
+ foreach (Xep.ServiceDiscovery.Item item in items_result.items) {
+ ServiceDiscovery.InfoResult? info_result2 = yield stream.get_module(ServiceDiscovery.Module.IDENTITY).request_info(stream, item.jid);
+ check_ns_in_info(stream, item.jid, info_result2);
}
- });
+ }
}
private bool check_ns_in_info(XmppStream stream, Jid jid, Xep.ServiceDiscovery.InfoResult info_result) {