gpgme_cancel() does not stop gpg process from finishing asynchronous call

Igor Belyi gpgme at
Wed Mar 30 01:51:11 CEST 2005

Starting asynchronouse call and then canceling it with gpgme_cancel do cause gpgme_wait() return Canceled error but leaves gpg process working and finishing the call. I have a slightly modified t-genkey test which shows that the key is generated after cancelation. I can send it if you want to.

I also have a patch (attached, since it's very small) fixing the problem in GPGME 1.0.2. :)

Basically, what it does - it stores pid return from _gpgme_io_spawn() in a engine_gpg_t structure field and then gently kills the child in gpg_cancel() callback. I do believe it should also help with those "/* FIXME: kill the child */" thingies.

Hope it helps,

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gpgme1.0-gpgme-cancel.patch
Type: text/x-patch
Size: 2427 bytes
Desc: not available
Url : /pipermail/attachments/20050329/980438c3/gpgme1.0-gpgme-cancel.bin

More information about the Gnupg-devel mailing list