mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
* query.c (initialize_module_query):
* call-scd.c (initialize_module_call_scd): New. * w32-pth.c (pth_init): Enable debugging depending on env var. (pth_self): New. (pth_mutex_release, pth_mutex_acquire): Implemented directly using the W32 API.
This commit is contained in:
parent
e73100a940
commit
8f22f895e9
9 changed files with 123 additions and 82 deletions
|
@ -1,3 +1,9 @@
|
|||
2004-12-19 Werner Koch <wk@g10code.com>
|
||||
|
||||
* query.c (initialize_module_query):
|
||||
|
||||
* call-scd.c (initialize_module_call_scd): New.
|
||||
|
||||
2004-12-18 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpg-agent.c (main): Remove special Pth initialize.
|
||||
|
|
|
@ -145,6 +145,7 @@ gpg_error_t agent_key_from_file (ctrl_t ctrl,
|
|||
int agent_key_available (const unsigned char *grip);
|
||||
|
||||
/*-- query.c --*/
|
||||
void initialize_module_query (void);
|
||||
int agent_askpin (ctrl_t ctrl,
|
||||
const char *desc_text, const char *inital_errtext,
|
||||
struct pin_entry_info_s *pininfo);
|
||||
|
@ -212,6 +213,7 @@ int divert_generic_cmd (ctrl_t ctrl,
|
|||
|
||||
|
||||
/*-- call-scd.c --*/
|
||||
void initialize_module_call_scd (void);
|
||||
int agent_reset_scd (ctrl_t ctrl);
|
||||
int agent_card_learn (ctrl_t ctrl,
|
||||
void (*kpinfo_cb)(void*, const char *),
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
static ASSUAN_CONTEXT scd_ctx = NULL;
|
||||
#ifdef USE_GNU_PTH
|
||||
static pth_mutex_t scd_lock = PTH_MUTEX_INIT;
|
||||
static pth_mutex_t scd_lock;
|
||||
#endif
|
||||
/* We need to keep track of the connection currently using the SCD.
|
||||
For a pipe server this is all a NOP because the connection will
|
||||
|
@ -153,6 +153,23 @@ get_membuf (struct membuf *mb, size_t *len)
|
|||
|
||||
|
||||
|
||||
/* This function must be called once to initialize this module. This
|
||||
has to be done before a second thread is spawned. We can't do the
|
||||
static initialization because Pth emulation code might not be able
|
||||
to do a static init; in particualr, it is not possible for W32. */
|
||||
void
|
||||
initialize_module_call_scd (void)
|
||||
{
|
||||
#ifdef USE_GNU_PTH
|
||||
static int initialized;
|
||||
|
||||
if (!initialized)
|
||||
if (pth_mutex_init (&scd_lock))
|
||||
initialized = 1;
|
||||
#endif /*USE_GNU_PTH*/
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
unlock_scd (int rc)
|
||||
{
|
||||
|
@ -163,7 +180,7 @@ unlock_scd (int rc)
|
|||
if (!rc)
|
||||
rc = gpg_error (GPG_ERR_INTERNAL);
|
||||
}
|
||||
#endif
|
||||
#endif /*USE_GNU_PTH*/
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -627,6 +627,10 @@ main (int argc, char **argv )
|
|||
exit (1);
|
||||
}
|
||||
|
||||
initialize_module_query ();
|
||||
initialize_module_call_scd ();
|
||||
|
||||
/* Try to create missing directories. */
|
||||
create_directories ();
|
||||
|
||||
if (debug_wait && pipe_server)
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
static ASSUAN_CONTEXT entry_ctx = NULL;
|
||||
#ifdef USE_GNU_PTH
|
||||
static pth_mutex_t entry_lock = PTH_MUTEX_INIT;
|
||||
static pth_mutex_t entry_lock;
|
||||
#endif
|
||||
|
||||
/* data to be passed to our callbacks */
|
||||
|
@ -64,6 +64,25 @@ struct entry_parm_s {
|
|||
|
||||
|
||||
|
||||
/* This function must be called once to initialize this module. This
|
||||
has to be done before a second thread is spawned. We can't do the
|
||||
static initialization because Pth emulation code might not be able
|
||||
to do a static init; in particualr, it is not possible for W32. */
|
||||
void
|
||||
initialize_module_query (void)
|
||||
{
|
||||
#ifdef USE_GNU_PTH
|
||||
static int initialized;
|
||||
|
||||
if (!initialized)
|
||||
if (pth_mutex_init (&entry_lock))
|
||||
initialized = 1;
|
||||
#endif /*USE_GNU_PTH*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Unlock the pinentry so that another thread can start one and
|
||||
disconnect that pinentry - we do this after the unlock so that a
|
||||
stalled pinentry does not block other threads. Fixme: We should
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue