From ee98cab4a3482d2b7477cb5636f240f669eee0ab Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 30 Jan 2001 18:03:21 +0000 Subject: [PATCH] Made gpgme_cancel work - at least a little bit. --- trunk/gpgme/gpgme.c | 2 ++ trunk/gpgme/w32-io.c | 2 +- trunk/gpgme/wait.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/trunk/gpgme/gpgme.c b/trunk/gpgme/gpgme.c index 935e8e8..43e89ad 100644 --- a/trunk/gpgme/gpgme.c +++ b/trunk/gpgme/gpgme.c @@ -113,6 +113,8 @@ _gpgme_release_result ( GpgmeCtx c ) void gpgme_cancel (GpgmeCtx c) { + return_if_fail (c); + c->cancel = 1; } diff --git a/trunk/gpgme/w32-io.c b/trunk/gpgme/w32-io.c index 8c19d81..2ee10bb 100644 --- a/trunk/gpgme/w32-io.c +++ b/trunk/gpgme/w32-io.c @@ -638,7 +638,7 @@ _gpgme_io_select ( struct io_select_fd_s *fds, size_t nfds ) count++; } } - code = WaitForMultipleObjects ( nwait, waitbuf, 0, any_write? 0:1000); + code = WaitForMultipleObjects ( nwait, waitbuf, 0, any_write? 200:1000); if ( code >= WAIT_OBJECT_0 && code < WAIT_OBJECT_0 + nwait ) { /* This WFMO is a really silly function: It does return either * the index of the signaled object or if 2 objects have been diff --git a/trunk/gpgme/wait.c b/trunk/gpgme/wait.c index ba7a22f..71038fb 100644 --- a/trunk/gpgme/wait.c +++ b/trunk/gpgme/wait.c @@ -213,7 +213,8 @@ _gpgme_wait_on_condition ( GpgmeCtx c, int hang, volatile int *cond ) } if (hang) run_idle (); - } while (hang); + } while (hang && !c->cancel ); + c->cancel = 0; /* fixme: fix all functions, to return a cancel error */ return c; } -- 2.26.2