diff options
author | fiaxh <git@lightrise.org> | 2020-04-23 13:53:44 +0200 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2020-04-24 14:18:24 +0200 |
commit | e7bc68ad4d02b8e5f6ba26c0e917abf4d9ab2ccc (patch) | |
tree | f1ef7e1d98723774a31374bfda7ab0804f38c6d4 /xmpp-vala/src/module/xep/0363_http_file_upload.vala | |
parent | 9661116d7814059fad7bf6a6ae5c0f684aed5bda (diff) | |
download | dino-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.vala | 23 |
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) { |