aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0030_service_discovery/module.vala
diff options
context:
space:
mode:
authorfrosty <frostinator33@airmail.cc>2026-10-26 10:21:57 -0400
committerfrosty <frostinator33@airmail.cc>2026-10-26 10:21:57 -0400
commit74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch)
tree560e6434f183eb54cd779936f3a4c9575146a066 /xmpp-vala/src/module/xep/0030_service_discovery/module.vala
parent3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff)
parent4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff)
Merge 'upstream/master'
Diffstat (limited to 'xmpp-vala/src/module/xep/0030_service_discovery/module.vala')
-rw-r--r--xmpp-vala/src/module/xep/0030_service_discovery/module.vala19
1 files changed, 14 insertions, 5 deletions
diff --git a/xmpp-vala/src/module/xep/0030_service_discovery/module.vala b/xmpp-vala/src/module/xep/0030_service_discovery/module.vala
index 537e460b..20666820 100644
--- a/xmpp-vala/src/module/xep/0030_service_discovery/module.vala
+++ b/xmpp-vala/src/module/xep/0030_service_discovery/module.vala
@@ -45,7 +45,7 @@ public class Module : XmppStreamModule, Iq.Handler {
return yield this.cache.get_entity_identities(jid);
}
- public async InfoResult? request_info(XmppStream stream, Jid jid) {
+ public async InfoResult? request_info(XmppStream stream, Jid jid) throws IOError {
var future = active_info_requests[jid];
if (future == null) {
var promise = new Promise<InfoResult?>();
@@ -53,10 +53,14 @@ public class Module : XmppStreamModule, Iq.Handler {
active_info_requests[jid] = future;
Iq.Stanza iq = new Iq.Stanza.get(new StanzaNode.build("query", NS_URI_INFO).add_self_xmlns()) { to=jid };
- Iq.Stanza iq_response = yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, iq);
- InfoResult? result = InfoResult.create_from_iq(iq_response);
+ try {
+ Iq.Stanza iq_response = yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, iq);
+ InfoResult? result = InfoResult.create_from_iq(iq_response);
- promise.set_value(result);
+ promise.set_value(result);
+ } catch (IOError e) {
+ promise.set_exception(e);
+ }
active_info_requests.unset(jid);
}
@@ -64,12 +68,17 @@ public class Module : XmppStreamModule, Iq.Handler {
InfoResult? res = yield future.wait_async();
return res;
} catch (FutureError error) {
+ if (error is FutureError.EXCEPTION) {
+ if (future.exception is IOError) {
+ throw (IOError) future.exception;
+ }
+ }
warning("Future error when waiting for info request result: %s", error.message);
return null;
}
}
- public async ItemsResult? request_items(XmppStream stream, Jid jid) {
+ public async ItemsResult? request_items(XmppStream stream, Jid jid) throws IOError {
StanzaNode query_node = new StanzaNode.build("query", NS_URI_ITEMS).add_self_xmlns();
Iq.Stanza iq = new Iq.Stanza.get(query_node) { to=jid };