mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
dirmngr: Allow conf files to disable default keyservers.
* dirmngr/server.c (ensure_keyserver): Detect special value "none" (cmd_keyserver): Ignore "none" and "hkp://none". -- GnuPG-bug-id: 6708
This commit is contained in:
parent
07cb3c65e8
commit
0ad1302390
3 changed files with 23 additions and 5 deletions
|
@ -2179,6 +2179,7 @@ ensure_keyserver (ctrl_t ctrl)
|
|||
uri_item_t plain_items = NULL;
|
||||
uri_item_t ui;
|
||||
strlist_t sl;
|
||||
int none_seen = 1;
|
||||
|
||||
if (ctrl->server_local->keyservers)
|
||||
return 0; /* Already set for this session. */
|
||||
|
@ -2191,6 +2192,11 @@ ensure_keyserver (ctrl_t ctrl)
|
|||
|
||||
for (sl = opt.keyserver; sl; sl = sl->next)
|
||||
{
|
||||
if (!strcmp (sl->d, "none"))
|
||||
{
|
||||
none_seen = 1;
|
||||
continue;
|
||||
}
|
||||
err = make_keyserver_item (sl->d, &item);
|
||||
if (err)
|
||||
goto leave;
|
||||
|
@ -2206,6 +2212,12 @@ ensure_keyserver (ctrl_t ctrl)
|
|||
}
|
||||
}
|
||||
|
||||
if (none_seen && !plain_items && !onion_items)
|
||||
{
|
||||
err = gpg_error (GPG_ERR_NO_KEYSERVER);
|
||||
goto leave;
|
||||
}
|
||||
|
||||
/* Decide which to use. Note that the session has no keyservers
|
||||
yet set. */
|
||||
if (onion_items && !onion_items->next && plain_items && !plain_items->next)
|
||||
|
@ -2276,8 +2288,7 @@ cmd_keyserver (assuan_context_t ctx, char *line)
|
|||
gpg_error_t err = 0;
|
||||
int clear_flag, add_flag, help_flag, host_flag, resolve_flag;
|
||||
int dead_flag, alive_flag;
|
||||
uri_item_t item = NULL; /* gcc 4.4.5 is not able to detect that it
|
||||
is always initialized. */
|
||||
uri_item_t item = NULL;
|
||||
|
||||
clear_flag = has_option (line, "--clear");
|
||||
help_flag = has_option (line, "--help");
|
||||
|
@ -2343,13 +2354,16 @@ cmd_keyserver (assuan_context_t ctx, char *line)
|
|||
|
||||
if (add_flag)
|
||||
{
|
||||
err = make_keyserver_item (line, &item);
|
||||
if (!strcmp (line, "none") || !strcmp (line, "hkp://none"))
|
||||
err = 0;
|
||||
else
|
||||
err = make_keyserver_item (line, &item);
|
||||
if (err)
|
||||
goto leave;
|
||||
}
|
||||
if (clear_flag)
|
||||
release_ctrl_keyservers (ctrl);
|
||||
if (add_flag)
|
||||
if (add_flag && item)
|
||||
{
|
||||
item->next = ctrl->server_local->keyservers;
|
||||
ctrl->server_local->keyservers = item;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue