X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=putty.h;h=416f8903eb1aa520157f673e1fbfd4f577bb95cd;hb=eb2fe29fc975b19a3b3692fced03559e705881d9;hp=943ccbf98dd18f53509ad92f615f11d3db679aba;hpb=f864265e393f4279045ca59d7eb9b03352766cde;p=PuTTY.git diff --git a/putty.h b/putty.h index 943ccbf9..416f8903 100644 --- a/putty.h +++ b/putty.h @@ -1200,17 +1200,32 @@ void crypto_wrapup(); /* * Exports from pageantc.c. * - * agent_query returns 1 for here's-a-response, and 0 for query-in- - * progress. In the latter case there will be a call to `callback' - * at some future point, passing callback_ctx as the first + * agent_query returns NULL for here's-a-response, and non-NULL for + * query-in- progress. In the latter case there will be a call to + * `callback' at some future point, passing callback_ctx as the first * parameter and the actual reply data as the second and third. * * The response may be a NULL pointer (in either of the synchronous * or asynchronous cases), which indicates failure to receive a * response. + * + * When the return from agent_query is not NULL, it identifies the + * in-progress query in case it needs to be cancelled. If + * agent_cancel_query is called, then the pending query is destroyed + * and the callback will not be called. (E.g. if you're going to throw + * away the thing you were using as callback_ctx.) + * + * Passing a null pointer as callback forces agent_query to behave + * synchronously, i.e. it will block if necessary, and guarantee to + * return NULL. The wrapper function agent_query_synchronous() makes + * this easier. */ -int agent_query(void *in, int inlen, void **out, int *outlen, - void (*callback)(void *, void *, int), void *callback_ctx); +typedef struct agent_pending_query agent_pending_query; +agent_pending_query *agent_query( + void *in, int inlen, void **out, int *outlen, + void (*callback)(void *, void *, int), void *callback_ctx); +void agent_cancel_query(agent_pending_query *); +void agent_query_synchronous(void *in, int inlen, void **out, int *outlen); int agent_exists(void); /*