|
Added
Link Here
|
| 1 |
--- g10/call-agent.c.orig 2017-05-15 14:13:22.000000000 +0200 |
| 2 |
+++ g10/call-agent.c 2017-05-19 08:45:45.000000000 +0200 |
| 3 |
@@ -184,7 +184,8 @@ |
| 4 |
|
| 5 |
|
| 6 |
/* Print a warning if the server's version number is less than our |
| 7 |
- version number. Returns an error code on a connection problem. */ |
| 8 |
+ version number. Returns an error code on a connection problem. |
| 9 |
+ Ignore an error for scdaemon (MODE==2). */ |
| 10 |
static gpg_error_t |
| 11 |
warn_version_mismatch (assuan_context_t ctx, const char *servername, int mode) |
| 12 |
{ |
| 13 |
@@ -193,7 +194,7 @@ |
| 14 |
const char *myversion = strusage (13); |
| 15 |
|
| 16 |
err = get_assuan_server_version (ctx, mode, &serverversion); |
| 17 |
- if (err) |
| 18 |
+ if (err && mode != 2) |
| 19 |
log_error (_("error getting version from '%s': %s\n"), |
| 20 |
servername, gpg_strerror (err)); |
| 21 |
else if (compare_version_strings (serverversion, myversion) < 0) |
| 22 |
@@ -217,10 +218,12 @@ |
| 23 |
} |
| 24 |
|
| 25 |
|
| 26 |
+#define FLAG_FOR_CARD_SUPPRESS_ERRORS 2 |
| 27 |
+ |
| 28 |
/* Try to connect to the agent via socket or fork it off and work by |
| 29 |
pipes. Handle the server's initial greeting */ |
| 30 |
static int |
| 31 |
-start_agent (ctrl_t ctrl, int for_card) |
| 32 |
+start_agent (ctrl_t ctrl, int flag_for_card) |
| 33 |
{ |
| 34 |
int rc; |
| 35 |
|
| 36 |
@@ -280,7 +283,7 @@ |
| 37 |
} |
| 38 |
} |
| 39 |
|
| 40 |
- if (!rc && for_card && !did_early_card_test) |
| 41 |
+ if (!rc && flag_for_card && !did_early_card_test) |
| 42 |
{ |
| 43 |
/* Request the serial number of the card for an early test. */ |
| 44 |
struct agent_card_info_s info; |
| 45 |
@@ -292,7 +295,7 @@ |
| 46 |
rc = assuan_transact (agent_ctx, "SCD SERIALNO openpgp", |
| 47 |
NULL, NULL, NULL, NULL, |
| 48 |
learn_status_cb, &info); |
| 49 |
- if (rc) |
| 50 |
+ if (rc && !(flag_for_card & FLAG_FOR_CARD_SUPPRESS_ERRORS)) |
| 51 |
{ |
| 52 |
switch (gpg_err_code (rc)) |
| 53 |
{ |
| 54 |
@@ -1023,7 +1026,7 @@ |
| 55 |
char *serialno = NULL; |
| 56 |
char line[ASSUAN_LINELENGTH]; |
| 57 |
|
| 58 |
- err = start_agent (NULL, 1); |
| 59 |
+ err = start_agent (NULL, 1 | FLAG_FOR_CARD_SUPPRESS_ERRORS); |
| 60 |
if (err) |
| 61 |
return err; |
| 62 |
|