mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-02-21 02:01:22 +00:00
Handle case where no old DNS servers exist
This commit is contained in:
parent
31ffe4403c
commit
4e8640b380
@ -40,9 +40,13 @@ void MacDNSHelper::setDNS(uint64_t nwid, const char *domain, const std::vector<I
|
||||
CFStringRef key = CFStringCreateWithCString(NULL, buf, kCFStringEncodingUTF8);
|
||||
CFArrayRef list = SCDynamicStoreCopyKeyList(ds, key);
|
||||
CFIndex i = 0, j = CFArrayGetCount(list);
|
||||
|
||||
CFPropertyListRef oldDNSServers = SCDynamicStoreCopyValue(ds, (CFStringRef)CFArrayGetValueAtIndex(list, i));
|
||||
if (!CFEqual(oldDNSServers,dict)) {
|
||||
bool dnsServersChanged = true;
|
||||
CFPropertyListRef oldDNSServers = NULL;
|
||||
if (j > 0) {
|
||||
oldDNSServers = SCDynamicStoreCopyValue(ds, (CFStringRef)CFArrayGetValueAtIndex(list, i));
|
||||
dnsServersChanged = !CFEqual(oldDNSServers,dict);
|
||||
}
|
||||
if (dnsServersChanged) {
|
||||
bool ret = TRUE;
|
||||
if (j <= 0) {
|
||||
ret &= SCDynamicStoreAddValue(ds, key, dict);
|
||||
@ -53,8 +57,9 @@ void MacDNSHelper::setDNS(uint64_t nwid, const char *domain, const std::vector<I
|
||||
fprintf(stderr, "Error writing DNS configuration\n");
|
||||
}
|
||||
}
|
||||
|
||||
CFRelease(oldDNSServers);
|
||||
if (oldDNSServers != NULL) {
|
||||
CFRelease(oldDNSServers);
|
||||
}
|
||||
CFRelease(list);
|
||||
CFRelease(key);
|
||||
CFRelease(dict);
|
||||
@ -67,8 +72,8 @@ void MacDNSHelper::setDNS(uint64_t nwid, const char *domain, const std::vector<I
|
||||
delete[] s;
|
||||
CFRelease(ds);
|
||||
}
|
||||
|
||||
void MacDNSHelper::removeDNS(uint64_t nwid)
|
||||
|
||||
void MacDNSHelper::removeDNS(uint64_t nwid)
|
||||
{
|
||||
SCDynamicStoreRef ds = SCDynamicStoreCreate(NULL, CFSTR("zerotier"), NULL, NULL);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user