mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-17 15:44:34 +02:00
agent: Simplify agent_popup_message_stop.
* agent/call-pinentry.c (agent_popup_message_stop): Just kill it. -- By checking if it's alive or not, we can lower a risk of sending SIGINT to a wrong process on unusual condition when PID is re-used to a different process. That's true, however, since it's alive usually, simply sending SIGINT is enough here. Note that here is a race condition for detecting if process is active or not; A process can die just after being detected alive. Moreover, when the process of pinentry accidentally died already, it should have caused return of assuan_transact and the thread of popup_message_thread likely already set popup_finished=1. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
914fa3be22
commit
804a77edd9
@ -1543,14 +1543,6 @@ agent_popup_message_stop (ctrl_t ctrl)
|
|||||||
TerminateProcess (process, 1);
|
TerminateProcess (process, 1);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
else if (pid && ((rc=waitpid (pid, NULL, WNOHANG))==-1 || (rc == pid)) )
|
|
||||||
{ /* The daemon already died. No need to send a kill. However
|
|
||||||
because we already waited for the process, we need to tell
|
|
||||||
assuan that it should not wait again (done by
|
|
||||||
unlock_pinentry). */
|
|
||||||
if (rc == pid)
|
|
||||||
assuan_set_flag (entry_ctx, ASSUAN_NO_WAITPID, 1);
|
|
||||||
}
|
|
||||||
else if (pid > 0)
|
else if (pid > 0)
|
||||||
kill (pid, SIGINT);
|
kill (pid, SIGINT);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user