mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
dirmngr: Change internal SRV lookup API.
* dirmngr/dns-stuff.c (get_dns_srv): Add args SERVICE and PROTO. * dirmngr/http.c (connect_server): Simplify SRV lookup. * dirmngr/ks-engine-hkp.c (map_host): Ditto. * dirmngr/t-dns-stuff.c (main): Adjust for changed get_dns_srv. -- This new API is more convenient because it includes commonly used code. Note that right now http.c's SRV record code is not used. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
9fa94aa107
commit
16078f3dee
5 changed files with 31 additions and 37 deletions
|
@ -1740,17 +1740,37 @@ getsrv_standard (const char *name,
|
|||
}
|
||||
|
||||
|
||||
/* Note that we do not return NONAME but simply store 0 at R_COUNT. */
|
||||
/* Query a SRV record for SERVICE and PROTO for NAME. If SERVICE is
|
||||
* NULL, NAME is expected to contain the full query name. Note that
|
||||
* we do not return NONAME but simply store 0 at R_COUNT. On error an
|
||||
* error code is returned and 0 stored at R_COUNT. */
|
||||
gpg_error_t
|
||||
get_dns_srv (const char *name, struct srventry **list, unsigned int *r_count)
|
||||
get_dns_srv (const char *name, const char *service, const char *proto,
|
||||
struct srventry **list, unsigned int *r_count)
|
||||
{
|
||||
gpg_error_t err;
|
||||
char *namebuffer = NULL;
|
||||
unsigned int srvcount;
|
||||
int i;
|
||||
|
||||
*list = NULL;
|
||||
*r_count = 0;
|
||||
srvcount = 0;
|
||||
|
||||
/* If SERVICE is given construct the query from it and PROTO. */
|
||||
if (service)
|
||||
{
|
||||
namebuffer = xtryasprintf ("_%s._%s.%s",
|
||||
service, proto? proto:"tcp", name);
|
||||
if (!namebuffer)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
goto leave;
|
||||
}
|
||||
name = namebuffer;
|
||||
}
|
||||
|
||||
|
||||
#ifdef USE_LIBDNS
|
||||
if (!standard_resolver)
|
||||
{
|
||||
|
@ -1852,6 +1872,7 @@ get_dns_srv (const char *name, struct srventry **list, unsigned int *r_count)
|
|||
}
|
||||
if (!err)
|
||||
*r_count = srvcount;
|
||||
xfree (namebuffer);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue