2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-09-04 16:25:21 +00:00

Adjust provided functionality to be compatible with asynchronous resolver.

This commit is contained in:
Ted Lemon
1998-01-12 01:01:44 +00:00
parent 0a8ee595f1
commit 7e20426119

View File

@@ -42,7 +42,7 @@
#ifndef lint #ifndef lint
static char copyright[] = static char copyright[] =
"$Id: resolv.c,v 1.5 1997/12/06 04:04:07 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n"; "$Id: resolv.c,v 1.6 1998/01/12 01:01:44 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */ #endif /* not lint */
#include "dhcpd.h" #include "dhcpd.h"
@@ -157,7 +157,10 @@ void read_resolv_conf (parse_time)
sl -> next = sp -> next; sl -> next = sp -> next;
else else
name_servers = sp -> next; name_servers = sp -> next;
free_name_server (sp, "pick_name_server"); /* We can't actually free the name server structure,
because somebody might be hanging on to it. If
your /etc/resolv.conf file changes a lot, this
could be a noticable memory leak. */
} else } else
sl = sp; sl = sp;
} }
@@ -180,7 +183,7 @@ void read_resolv_conf (parse_time)
/* Pick a name server from the /etc/resolv.conf file. */ /* Pick a name server from the /etc/resolv.conf file. */
struct sockaddr_in *pick_name_server () struct name_server *first_name_server ()
{ {
FILE *rc; FILE *rc;
static TIME rcdate; static TIME rcdate;
@@ -190,7 +193,7 @@ struct sockaddr_in *pick_name_server ()
if (cur_time > rcdate) { if (cur_time > rcdate) {
if (stat (path_resolv_conf, &st) < 0) { if (stat (path_resolv_conf, &st) < 0) {
warn ("Can't stat %s", path_resolv_conf); warn ("Can't stat %s", path_resolv_conf);
return (struct sockaddr_in *)0; return (struct name_server *)0;
} }
if (st.st_mtime > rcdate) { if (st.st_mtime > rcdate) {
char rcbuf [512]; char rcbuf [512];
@@ -201,7 +204,5 @@ struct sockaddr_in *pick_name_server ()
} }
} }
if (name_servers) return name_servers;
return &name_servers -> addr;
return (struct sockaddr_in *)0;
} }