diff options
| author | Marvin W <git@larma.de> | 2026-03-14 13:42:58 +0800 |
|---|---|---|
| committer | Marvin W <git@larma.de> | 2026-04-08 19:02:44 +0200 |
| commit | 64757cbe2572259ad201f4c691aeb545088ae42a (patch) | |
| tree | 6c3de38252417500ab1234687bd413e29dcc4d1b /xmpp-vala/src/module/iq/module.vala | |
| parent | 82da21c1a67d5a50d0a4940b5e3c687929b041c2 (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.vala | 13 |
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; } |
