mirror of
git://git.gnupg.org/gnupg.git
synced 2025-02-01 16:33:02 +01:00
g10: Suppress error for card availability check.
* g10/call-agent.c (start_agent): Add semantics for card; Suppress error for card check. (warn_version_mismatch): Ignore an error for scdaemon. (agent_scd_serialno): Call start_agent with FLAG_FOR_CARD_SUPPRESS_ERRORS. -- GnuPG-bug-id: 3165 Fixes-commit: 97a2394ecafaa6f58e4a1f70ecfd04408dc15606 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
386a7bbb24
commit
a8dd96826f
@ -184,7 +184,8 @@ default_inq_cb (void *opaque, const char *line)
|
|||||||
|
|
||||||
|
|
||||||
/* Print a warning if the server's version number is less than our
|
/* Print a warning if the server's version number is less than our
|
||||||
version number. Returns an error code on a connection problem. */
|
version number. Returns an error code on a connection problem.
|
||||||
|
Ignore an error for scdaemon (MODE==2). */
|
||||||
static gpg_error_t
|
static gpg_error_t
|
||||||
warn_version_mismatch (assuan_context_t ctx, const char *servername, int mode)
|
warn_version_mismatch (assuan_context_t ctx, const char *servername, int mode)
|
||||||
{
|
{
|
||||||
@ -193,7 +194,7 @@ warn_version_mismatch (assuan_context_t ctx, const char *servername, int mode)
|
|||||||
const char *myversion = strusage (13);
|
const char *myversion = strusage (13);
|
||||||
|
|
||||||
err = get_assuan_server_version (ctx, mode, &serverversion);
|
err = get_assuan_server_version (ctx, mode, &serverversion);
|
||||||
if (err)
|
if (err && mode != 2)
|
||||||
log_error (_("error getting version from '%s': %s\n"),
|
log_error (_("error getting version from '%s': %s\n"),
|
||||||
servername, gpg_strerror (err));
|
servername, gpg_strerror (err));
|
||||||
else if (compare_version_strings (serverversion, myversion) < 0)
|
else if (compare_version_strings (serverversion, myversion) < 0)
|
||||||
@ -217,10 +218,12 @@ warn_version_mismatch (assuan_context_t ctx, const char *servername, int mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define FLAG_FOR_CARD_SUPPRESS_ERRORS 2
|
||||||
|
|
||||||
/* Try to connect to the agent via socket or fork it off and work by
|
/* Try to connect to the agent via socket or fork it off and work by
|
||||||
pipes. Handle the server's initial greeting */
|
pipes. Handle the server's initial greeting */
|
||||||
static int
|
static int
|
||||||
start_agent (ctrl_t ctrl, int for_card)
|
start_agent (ctrl_t ctrl, int flag_for_card)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -280,7 +283,7 @@ start_agent (ctrl_t ctrl, int for_card)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rc && for_card && !did_early_card_test)
|
if (!rc && flag_for_card && !did_early_card_test)
|
||||||
{
|
{
|
||||||
/* Request the serial number of the card for an early test. */
|
/* Request the serial number of the card for an early test. */
|
||||||
struct agent_card_info_s info;
|
struct agent_card_info_s info;
|
||||||
@ -292,7 +295,7 @@ start_agent (ctrl_t ctrl, int for_card)
|
|||||||
rc = assuan_transact (agent_ctx, "SCD SERIALNO openpgp",
|
rc = assuan_transact (agent_ctx, "SCD SERIALNO openpgp",
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
learn_status_cb, &info);
|
learn_status_cb, &info);
|
||||||
if (rc)
|
if (rc && !(flag_for_card & FLAG_FOR_CARD_SUPPRESS_ERRORS))
|
||||||
{
|
{
|
||||||
switch (gpg_err_code (rc))
|
switch (gpg_err_code (rc))
|
||||||
{
|
{
|
||||||
@ -1023,7 +1026,7 @@ agent_scd_serialno (char **r_serialno, const char *demand)
|
|||||||
char *serialno = NULL;
|
char *serialno = NULL;
|
||||||
char line[ASSUAN_LINELENGTH];
|
char line[ASSUAN_LINELENGTH];
|
||||||
|
|
||||||
err = start_agent (NULL, 1);
|
err = start_agent (NULL, 1 | FLAG_FOR_CARD_SUPPRESS_ERRORS);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user