aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/iq/module.vala
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2026-03-14 13:42:58 +0800
committerMarvin W <git@larma.de>2026-04-08 19:02:44 +0200
commit64757cbe2572259ad201f4c691aeb545088ae42a (patch)
tree6c3de38252417500ab1234687bd413e29dcc4d1b /xmpp-vala/src/module/iq/module.vala
parent82da21c1a67d5a50d0a4940b5e3c687929b041c2 (diff)
Add implementation for XEP-0202 Entity Time
Diffstat (limited to 'xmpp-vala/src/module/iq/module.vala')
-rw-r--r--xmpp-vala/src/module/iq/module.vala13
1 files changed, 11 insertions, 2 deletions
diff --git a/xmpp-vala/src/module/iq/module.vala b/xmpp-vala/src/module/iq/module.vala
index 172aa9b1..bb9260c9 100644
--- a/xmpp-vala/src/module/iq/module.vala
+++ b/xmpp-vala/src/module/iq/module.vala
@@ -19,11 +19,20 @@ namespace Xmpp.Iq {
Iq.Stanza? return_stanza = null;
responseListeners[iq.id] = new ResponseListener((_, result_iq) => {
return_stanza = result_iq;
- Idle.add(send_iq_async.callback);
+ if (cancellable == null || !cancellable.is_cancelled()) {
+ Idle.add(send_iq_async.callback);
+ }
});
stream.write_async(iq.stanza, io_priority, cancellable);
+ ulong cancelled_handler_id = 0;
+ if (cancellable != null) {
+ cancelled_handler_id = cancellable.cancelled.connect(() => Idle.add(send_iq_async.callback));
+ }
yield;
- cancellable.set_error_if_cancelled();
+ if (cancellable != null) {
+ cancellable.disconnect(cancelled_handler_id);
+ cancellable.set_error_if_cancelled();
+ }
return return_stanza;
}