mirror of
git://git.gnupg.org/gnupg.git
synced 2024-06-09 23:39:51 +02:00
fb7828676c
* agent/agent.h (struct server_control_s): Rename PINENTRY_ACTIVE. * agent/call-pinentry.c (entry_owner): Remove. (agent_reset_query): Use thread private object of PINENTRY_ACTIVE. (unlock_pinentry): Add CTRL to arguments to access thread private. Check and decrement PINENTRY_ACTIVE for recursive use. (start_pinentry): Check and increment PINENTRY_ACTIVE for recursion. (agent_askpin): Follow the change of unlock_pinentry API. (agent_get_passphrase, agent_get_confirmation): Likewise. (agent_show_message, agent_popup_message_start): Likewise. (agent_popup_message_stop, agent_clear_passphrase): Likewise. -- We use the member PINENTRY_ACTIVE as a thread private object. It's only valid for a single thread at a time. It would be possible to have a thread shared object of PINENTRY_ACTIVE, keeping ENTRY_OWNER for distinguishing its owner (which is also a thread shared object). But, in this case, access to ENTRY_OWNER is tricky (only comparison to accessing thread would be OK with no lock), or we need to introduce another lock for accessing ENTRY_OWNER, which complicates the code too much. So, simply have a thread private object for recursive pinentry access. GnuPG-bug-id: 3190 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> |
||
---|---|---|
.. | ||
agent.h | ||
all-tests.scm | ||
cache.c | ||
call-pinentry.c | ||
call-scd.c | ||
ChangeLog-2011 | ||
command-ssh.c | ||
command.c | ||
cvt-openpgp.c | ||
cvt-openpgp.h | ||
divert-scd.c | ||
findkey.c | ||
genkey.c | ||
gpg-agent-w32info.rc | ||
gpg-agent.c | ||
keyformat.txt | ||
learncard.c | ||
Makefile.am | ||
pkdecrypt.c | ||
pksign.c | ||
preset-passphrase.c | ||
protect-tool.c | ||
protect.c | ||
t-protect.c | ||
trans.c | ||
trustlist.c | ||
w32main.c | ||
w32main.h |