Made gpgme_cancel work - at least a little bit.
authorWerner Koch <wk@gnupg.org>
Tue, 30 Jan 2001 18:03:21 +0000 (18:03 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 30 Jan 2001 18:03:21 +0000 (18:03 +0000)
trunk/gpgme/gpgme.c
trunk/gpgme/w32-io.c
trunk/gpgme/wait.c

index 935e8e8064af34d6f2cbac1f943cbf68981333ae..43e89ad2001db8e23ae1be7e0eec8cfd26536688 100644 (file)
@@ -113,6 +113,8 @@ _gpgme_release_result ( GpgmeCtx c )
 void
 gpgme_cancel (GpgmeCtx c)
 {
+    return_if_fail (c);
+
     c->cancel = 1;
 }
 
index 8c19d818816691dec4c628331b17666e2e7bfef6..2ee10bbbd48ae88adea98a51c9329d73782e9ef0 100644 (file)
@@ -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
index ba7a22f1a150c077620a38dbcbf03d754b974f0f..71038fb35c9acacced2c0b13e41c0af0006fa883 100644 (file)
@@ -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;
 }