mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
Add code for explicit selection of pooled A records.
To better cope with round robin pooled A records like keys.gnupg.net we need to keep some information on unresponsive hosts etc. What we do now is to resolve the hostnames, remember them and select a random one. If a host is dead it will be marked and a different one selected. This is intended to solve the problem of long timeouts due to unresponsive hosts. The code is not yet finished but selection works.
This commit is contained in:
parent
4206a2bd48
commit
f1e9f510ec
8 changed files with 455 additions and 81 deletions
|
@ -42,6 +42,7 @@
|
|||
#include "misc.h"
|
||||
#include "ldap-wrapper.h"
|
||||
#include "ks-action.h"
|
||||
#include "ks-engine.h" /* (ks_hkp_print_hosttable) */
|
||||
|
||||
/* To avoid DoS attacks we limit the size of a certificate to
|
||||
something reasonable. */
|
||||
|
@ -1374,12 +1375,13 @@ cmd_keyserver (assuan_context_t ctx, char *line)
|
|||
{
|
||||
ctrl_t ctrl = assuan_get_pointer (ctx);
|
||||
gpg_error_t err;
|
||||
int clear_flag, add_flag, help_flag;
|
||||
int clear_flag, add_flag, help_flag, host_flag;
|
||||
uri_item_t item = NULL; /* gcc 4.4.5 is not able to detect that it
|
||||
is always initialized. */
|
||||
|
||||
clear_flag = has_option (line, "--clear");
|
||||
help_flag = has_option (line, "--help");
|
||||
host_flag = has_option (line, "--print-hosttable");
|
||||
line = skip_options (line);
|
||||
add_flag = !!*line;
|
||||
|
||||
|
@ -1389,6 +1391,13 @@ cmd_keyserver (assuan_context_t ctx, char *line)
|
|||
goto leave;
|
||||
}
|
||||
|
||||
if (host_flag)
|
||||
{
|
||||
ks_hkp_print_hosttable ();
|
||||
err = 0;
|
||||
goto leave;
|
||||
}
|
||||
|
||||
if (add_flag)
|
||||
{
|
||||
item = xtrymalloc (sizeof *item + strlen (line));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue