summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-19 08:54:52 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-20 11:23:33 +0200
commit7d33d36d73d2e902b107fb597e84e44ab11274a9 (patch)
tree7ef04cf1c29216f342da8e5ee69de7c1290959aa
parentmDNSResponder: Update to v765.20.4 (diff)
downloadrtems-libbsd-7d33d36d73d2e902b107fb597e84e44ab11274a9.tar.bz2
mDNSResponder: Update to v765.30.11
The sources can be obtained via: https://opensource.apple.com/tarballs/mDNSResponder/mDNSResponder-765.30.11.tar.gz Update #3522.
-rw-r--r--mDNSResponder/Makefile2
-rw-r--r--mDNSResponder/mDNSCore/dnsproxy.c21
-rwxr-xr-xmDNSResponder/mDNSCore/mDNSEmbeddedAPI.h2
-rwxr-xr-xmDNSResponder/mDNSCore/uDNS.c5
-rw-r--r--mDNSResponder/mDNSMacOSX/Metrics.m123
-rw-r--r--mDNSResponder/mDNSMacOSX/mDNSMacOSX.c32
-rwxr-xr-xmDNSResponder/mDNSPosix/Responder.c4
-rwxr-xr-xmDNSResponder/mDNSPosix/mDNSPosix.c36
-rwxr-xr-xmDNSResponder/mDNSPosix/mDNSUNP.c4
-rw-r--r--mDNSResponder/mDNSShared/dns_sd.h2
-rwxr-xr-xmDNSResponder/mDNSWindows/mDNSWin32.c2
11 files changed, 112 insertions, 121 deletions
diff --git a/mDNSResponder/Makefile b/mDNSResponder/Makefile
index dbf604af..ddf12f73 100644
--- a/mDNSResponder/Makefile
+++ b/mDNSResponder/Makefile
@@ -16,7 +16,7 @@
include $(MAKEFILEPATH)/pb_makefiles/platform.make
-MVERS = "mDNSResponder-765.20.4"
+MVERS = "mDNSResponder-765.30.11"
DDNSWRITECONFIG = "$(DSTROOT)/Library/Application Support/Bonjour/ddnswriteconfig"
VER =
diff --git a/mDNSResponder/mDNSCore/dnsproxy.c b/mDNSResponder/mDNSCore/dnsproxy.c
index 05b70dd9..5376d3c8 100644
--- a/mDNSResponder/mDNSCore/dnsproxy.c
+++ b/mDNSResponder/mDNSCore/dnsproxy.c
@@ -195,6 +195,8 @@ mDNSlocal mDNSu8 *AddResourceRecords(mDNS *const m, DNSProxyClient *pc, mDNSu8 *
CacheRecord *soa = mDNSNULL;
CacheRecord *cname = mDNSNULL;
mDNSu8 *limit;
+ domainname tempQName;
+ mDNSu32 tempQNameHash;
*error = mStatus_NoError;
*prevptr = mDNSNULL;
@@ -222,20 +224,17 @@ mDNSlocal mDNSu8 *AddResourceRecords(mDNS *const m, DNSProxyClient *pc, mDNSu8 *
}
LogInfo("AddResourceRecords: Limit is %d", limit - m->omsg.data);
- if (!SameDomainName(&pc->qname, &pc->q.qname))
- {
- AssignDomainName(&pc->q.qname, &pc->qname);
- pc->q.qnamehash = DomainNameHashValue(&pc->q.qname);
- }
+ AssignDomainName(&tempQName, &pc->qname);
+ tempQNameHash = DomainNameHashValue(&tempQName);
again:
nsec = soa = cname = mDNSNULL;
- slot = HashSlot(&pc->q.qname);
-
- cg = CacheGroupForName(m, slot, pc->q.qnamehash, &pc->q.qname);
+ slot = HashSlot(&tempQName);
+
+ cg = CacheGroupForName(m, slot, tempQNameHash, &tempQName);
if (!cg)
{
- LogInfo("AddResourceRecords: CacheGroup not found");
+ LogInfo("AddResourceRecords: CacheGroup not found for %##s", tempQName.c);
*error = mStatus_NoSuchRecord;
return mDNSNULL;
}
@@ -344,8 +343,8 @@ again:
}
if (cname)
{
- AssignDomainName(&pc->q.qname, &cname->resrec.rdata->u.name);
- pc->q.qnamehash = DomainNameHashValue(&pc->q.qname);
+ AssignDomainName(&tempQName, &cname->resrec.rdata->u.name);
+ tempQNameHash = DomainNameHashValue(&tempQName);
goto again;
}
if (!ptr)
diff --git a/mDNSResponder/mDNSCore/mDNSEmbeddedAPI.h b/mDNSResponder/mDNSCore/mDNSEmbeddedAPI.h
index 3fd654eb..248b848f 100755
--- a/mDNSResponder/mDNSCore/mDNSEmbeddedAPI.h
+++ b/mDNSResponder/mDNSCore/mDNSEmbeddedAPI.h
@@ -3376,7 +3376,7 @@ extern mDNSu8 *DNSProxySetAttributes(DNSQuestion *q, DNSMessageHeader *h, DNSMes
#if APPLE_OSX_mDNSResponder
extern void mDNSPlatformGetDNSRoutePolicy(mDNS *const m, DNSQuestion *q, mDNSBool *isBlocked);
#endif
-extern void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, DNSQuestion *q);
+extern void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, const DNSQuestion *q);
extern mDNSs32 mDNSPlatformGetPID(void);
extern mDNSBool mDNSValidKeepAliveRecord(AuthRecord *rr);
diff --git a/mDNSResponder/mDNSCore/uDNS.c b/mDNSResponder/mDNSCore/uDNS.c
index 694c745c..5848e1e1 100755
--- a/mDNSResponder/mDNSCore/uDNS.c
+++ b/mDNSResponder/mDNSCore/uDNS.c
@@ -4737,7 +4737,10 @@ mDNSexport void uDNS_CheckCurrentQuestion(mDNS *const m)
{
q->LocalSocket = mDNSPlatformUDPSocket(m, zeroIPPort);
if (q->LocalSocket)
- mDNSPlatformSetSocktOpt(q->LocalSocket, mDNSTransport_UDP, q->qDNSServer->addr.type, q);
+ {
+ mDNSPlatformSetSocktOpt(q->LocalSocket, mDNSTransport_UDP, mDNSAddrType_IPv4, q);
+ mDNSPlatformSetSocktOpt(q->LocalSocket, mDNSTransport_UDP, mDNSAddrType_IPv6, q);
+ }
}
if (!q->LocalSocket) err = mStatus_NoMemoryErr; // If failed to make socket (should be very rare), we'll try again next time
else
diff --git a/mDNSResponder/mDNSMacOSX/Metrics.m b/mDNSResponder/mDNSMacOSX/Metrics.m
index 8dae3f5f..bfff58e4 100644
--- a/mDNSResponder/mDNSMacOSX/Metrics.m
+++ b/mDNSResponder/mDNSMacOSX/Metrics.m
@@ -99,16 +99,14 @@ static const Domain kQueryStatsDomains[] =
{ "apple.com.", (domainname *)"\x5" "apple" "\x3" "com", 2 },
{ "icloud.com.", (domainname *)"\x6" "icloud" "\x3" "com", 2 },
{ "mzstatic.com.", (domainname *)"\x8" "mzstatic" "\x3" "com", 2 },
- { "me.com.", (domainname *)"\x2" "me" "\x3" "com", 2 },
{ "google.com.", (domainname *)"\x6" "google" "\x3" "com", 2 },
- { "youtube.com.", (domainname *)"\x7" "youtube" "\x3" "com", 2 },
{ "facebook.com.", (domainname *)"\x8" "facebook" "\x3" "com", 2 },
{ "baidu.com.", (domainname *)"\x5" "baidu" "\x3" "com", 2 },
{ "yahoo.com.", (domainname *)"\x5" "yahoo" "\x3" "com", 2 },
{ "qq.com.", (domainname *)"\x2" "qq" "\x3" "com", 2 },
};
-check_compile_time(countof(kQueryStatsDomains) == 11);
+check_compile_time(countof(kQueryStatsDomains) == 9);
// DNSHist contains the per domain per network type histogram data that goes in a DNSDomainStats protobuf message. See
// <rdar://problem/23980546> MDNSResponder.proto update.
@@ -168,7 +166,6 @@ check_compile_time(countof_field(DNSHist, negResponseLatencyBins) == (count
typedef struct
{
- DNSHist * histAny; // Histogram data for queries of any resource record type.
DNSHist * histA; // Histogram data for queries for A resource records.
DNSHist * histAAAA; // Histogram data for queries for AAAA resource records.
@@ -313,7 +310,7 @@ static AWDServerConnection * gAWDServerConnection = nil;
mDNSlocal mStatus DNSDomainStatsCreate(const Domain *inDomain, DNSDomainStats **outStats);
mDNSlocal void DNSDomainStatsFree(DNSDomainStats *inStats);
mDNSlocal void DNSDomainStatsFreeList(DNSDomainStats *inList);
-mDNSlocal mStatus DNSDomainStatsUpdate(DNSDomainStats *inStats, uint16_t inType, const ResourceRecord *inRR, mDNSu32 inQuerySendCount, mDNSu32 inLatencyMs, mDNSBool inForCell);
+mDNSlocal mStatus DNSDomainStatsUpdate(DNSDomainStats *inStats, int inType, const ResourceRecord *inRR, mDNSu32 inQuerySendCount, mDNSu32 inLatencyMs, mDNSBool inForCell);
mDNSlocal mStatus ResolveStatsDomainCreate(const Domain *inDomain, ResolveStatsDomain **outDomain);
mDNSlocal void ResolveStatsDomainFree(ResolveStatsDomain *inDomain);
@@ -362,18 +359,10 @@ mDNSlocal void ValidateDNSStatsDomains(void);
mStatus MetricsInit(void)
{
- mStatus err;
-
#if (METRICS_VALIDATE_DNS_STATS_DOMAINS)
ValidateDNSStatsDomains();
#endif
- err = CreateDomainStatsList(&gDomainStatsList);
- require_noerr_quiet(err, exit);
-
- err = CreateResolveStatsList(&gResolveStatsList);
- require_noerr_quiet(err, exit);
-
@autoreleasepool
{
gAWDServerConnection = [[AWDServerConnectionSoft alloc]
@@ -395,7 +384,7 @@ mStatus MetricsInit(void)
SubmitAWDMetric(inMetricID);
}
forIdentifier: (UInt32)AWDMetricId_MDNSResponder_ResolveStats];
-
+
[gAWDServerConnection
registerQueriableMetricCallback: ^(UInt32 inMetricID)
{
@@ -408,8 +397,14 @@ mStatus MetricsInit(void)
LogMsg("MetricsInit: failed to create AWD server connection.");
}
}
-exit:
- return (err);
+
+ if( gAWDServerConnection )
+ {
+ CreateDomainStatsList(&gDomainStatsList);
+ CreateResolveStatsList(&gResolveStatsList);
+ }
+
+ return (mStatus_NoError);
}
//===========================================================================================================================
@@ -425,6 +420,9 @@ mDNSexport void MetricsUpdateUDNSQueryStats(const domainname *inQueryName, mDNSu
int skipCount;
int skipCountLast = -1;
+ require_quiet(gAWDServerConnection, exit);
+ require_quiet((inType == kDNSType_A) || (inType == kDNSType_AAAA), exit);
+
queryLabelCount = CountLabels(inQueryName);
for (stats = gDomainStatsList; stats; stats = stats->next)
@@ -455,6 +453,8 @@ mDNSexport void MetricsUpdateUDNSQueryStats(const domainname *inQueryName, mDNSu
}
}
+exit:
+ return;
}
//===========================================================================================================================
@@ -473,6 +473,7 @@ mDNSexport void MetricsUpdateUDNSResolveStats(const domainname *inQueryName, con
const domainname * queryParentDomain;
Response response;
+ require_quiet(gAWDServerConnection, exit);
require_quiet((inRR->rrtype == kDNSType_A) || (inRR->rrtype == kDNSType_AAAA), exit);
require_quiet(inRR->rDNSServer, exit);
@@ -536,6 +537,7 @@ mDNSexport void LogMetrics(void)
int hostnameObjCount = 0;
int addrObjCount = 0;
+ LogMsgNoIdent("gAWDServerConnection %p", gAWDServerConnection);
LogMsgNoIdent("---- DNS query stats by domain -----");
for (stats = gDomainStatsList; stats; stats = stats->next)
@@ -657,7 +659,6 @@ mDNSlocal void DNSDomainStatsFree(DNSDomainStats *inStats)
{
if (inStats->nonCellular)
{
- ForgetMem(&inStats->nonCellular->histAny);
ForgetMem(&inStats->nonCellular->histA);
ForgetMem(&inStats->nonCellular->histAAAA);
free(inStats->nonCellular);
@@ -665,7 +666,6 @@ mDNSlocal void DNSDomainStatsFree(DNSDomainStats *inStats)
}
if (inStats->cellular)
{
- ForgetMem(&inStats->cellular->histAny);
ForgetMem(&inStats->cellular->histA);
ForgetMem(&inStats->cellular->histAAAA);
free(inStats->cellular);
@@ -693,51 +693,31 @@ mDNSlocal void DNSDomainStatsFreeList(DNSDomainStats *inList)
// DNSDomainStatsUpdate
//===========================================================================================================================
-mDNSlocal mStatus DNSDomainStatsUpdate(DNSDomainStats *inStats, uint16_t inType, const ResourceRecord *inRR, mDNSu32 inQuerySendCount, mDNSu32 inLatencyMs, mDNSBool inForCell)
+mDNSlocal mStatus DNSDomainStatsUpdate(DNSDomainStats *inStats, int inType, const ResourceRecord *inRR, mDNSu32 inQuerySendCount, mDNSu32 inLatencyMs, mDNSBool inForCell)
{
mStatus err;
- DNSHistSet ** p;
DNSHistSet * set;
- DNSHist * histAny;
+ DNSHistSet ** pSet;
DNSHist * hist;
+ DNSHist ** pHist;
int i;
require_action_quiet(inRR || (inQuerySendCount > 0), exit, err = mStatus_NoError);
+ require_action_quiet((inType == kDNSType_A) || (inType == kDNSType_AAAA), exit, err = mStatus_NoError);
- p = inForCell ? &inStats->cellular : &inStats->nonCellular;
- if ((set = *p) == NULL)
+ pSet = inForCell ? &inStats->cellular : &inStats->nonCellular;
+ if ((set = *pSet) == NULL)
{
set = (DNSHistSet *)calloc(1, sizeof(*set));
require_action_quiet(set, exit, err = mStatus_NoMemoryErr);
- *p = set;
+ *pSet = set;
}
- if ((histAny = set->histAny) == NULL)
+ pHist = (inType == kDNSType_A) ? &set->histA : &set->histAAAA;
+ if ((hist = *pHist) == NULL)
{
- histAny = (DNSHist *)calloc(1, sizeof(*histAny));
- require_action_quiet(histAny, exit, err = mStatus_NoMemoryErr);
- set->histAny = histAny;
- }
- if (inType == kDNSType_A)
- {
- if ((hist = set->histA) == NULL)
- {
- hist = (DNSHist *)calloc(1, sizeof(*hist));
- require_action_quiet(hist, exit, err = mStatus_NoMemoryErr);
- set->histA = hist;
- }
- }
- else if (inType == kDNSType_AAAA)
- {
- if ((hist = set->histAAAA) == NULL)
- {
- hist = (DNSHist *)calloc(1, sizeof(*hist));
- require_action_quiet(hist, exit, err = mStatus_NoMemoryErr);
- set->histAAAA = hist;
- }
- }
- else
- {
- hist = NULL;
+ hist = (DNSHist *)calloc(1, sizeof(*hist));
+ require_action_quiet(hist, exit, err = mStatus_NoMemoryErr);
+ *pHist = hist;
}
if (inRR)
@@ -748,35 +728,23 @@ mDNSlocal mStatus DNSDomainStatsUpdate(DNSDomainStats *inStats, uint16_t inType,
i = Min(inQuerySendCount, kQueryStatsMaxQuerySendCount);
- sendCountBins = isNegative ? histAny->negAnsweredQuerySendCountBins : histAny->answeredQuerySendCountBins;
+ sendCountBins = isNegative ? hist->negAnsweredQuerySendCountBins : hist->answeredQuerySendCountBins;
increment_saturate(sendCountBins[i], UINT16_MAX);
- if (hist)
- {
- sendCountBins = isNegative ? hist->negAnsweredQuerySendCountBins : hist->answeredQuerySendCountBins;
- increment_saturate(sendCountBins[i], UINT16_MAX);
- }
if (inQuerySendCount > 0)
{
for (i = 0; (i < (int)countof(kResponseLatencyMsLimits)) && (inLatencyMs >= kResponseLatencyMsLimits[i]); ++i) {}
- latencyBins = isNegative ? histAny->negResponseLatencyBins : histAny->responseLatencyBins;
+ latencyBins = isNegative ? hist->negResponseLatencyBins : hist->responseLatencyBins;
increment_saturate(latencyBins[i], UINT16_MAX);
- if (hist)
- {
- latencyBins = isNegative ? hist->negResponseLatencyBins : hist->responseLatencyBins;
- increment_saturate(latencyBins[i], UINT16_MAX);
- }
}
}
else
{
i = Min(inQuerySendCount, kQueryStatsMaxQuerySendCount);
- increment_saturate(histAny->unansweredQuerySendCountBins[i], UINT16_MAX);
- if (hist) increment_saturate(hist->unansweredQuerySendCountBins[i], UINT16_MAX);
+ increment_saturate(hist->unansweredQuerySendCountBins[i], UINT16_MAX);
for (i = 0; (i < (int)countof(kResponseLatencyMsLimits)) && (inLatencyMs >= kResponseLatencyMsLimits[i]); ++i) {}
- increment_saturate(histAny->unansweredQueryDurationBins[i], UINT16_MAX);
- if (hist) increment_saturate(hist->unansweredQueryDurationBins[i], UINT16_MAX);
+ increment_saturate(hist->unansweredQueryDurationBins[i], UINT16_MAX);
}
err = mStatus_NoError;
@@ -1505,7 +1473,7 @@ mDNSlocal void FreeResolveStatsServerList(ResolveStatsDNSServer *inList)
mDNSlocal mStatus SubmitAWDMetric(UInt32 inMetricID)
{
- mStatus err = mStatus_NoError;
+ mStatus err;
switch (inMetricID)
{
@@ -1518,11 +1486,12 @@ mDNSlocal mStatus SubmitAWDMetric(UInt32 inMetricID)
break;
case AWDMetricId_MDNSResponder_ServicesStats:
- [AWDMetricManagerSoft postMetricWithId:AWDMetricId_MDNSResponder_ServicesStats integerValue:max_num_regservices];
+ [AWDMetricManagerSoft postMetricWithId:AWDMetricId_MDNSResponder_ServicesStats unsignedIntegerValue:max_num_regservices];
KQueueLock(&mDNSStorage);
// reset the no of max services since we want to collect the max no of services registered per AWD submission period
max_num_regservices = curr_num_regservices;
KQueueUnlock(&mDNSStorage, "SubmitAWDSimpleMetricServiceStats");
+ err = mStatus_NoError;
break;
default:
@@ -1530,8 +1499,7 @@ mDNSlocal mStatus SubmitAWDMetric(UInt32 inMetricID)
break;
}
- if (err)
- LogMsg("SubmitAWDMetric for metric ID 0x%08X failed with error %d", inMetricID, err);
+ if (err) LogMsg("SubmitAWDMetric for metric ID 0x%08X failed with error %d", inMetricID, err);
return (err);
}
@@ -1552,9 +1520,8 @@ mDNSlocal mStatus SubmitAWDMetricQueryStats(void)
err = CreateDomainStatsList(&newDomainStatsList);
require_noerr_quiet(err, exit);
- domainStatsList = gDomainStatsList;
-
KQueueLock(&mDNSStorage);
+ domainStatsList = gDomainStatsList;
gDomainStatsList = newDomainStatsList;
KQueueUnlock(&mDNSStorage, "SubmitAWDMetricQueryStats");
@@ -1611,10 +1578,9 @@ mDNSlocal mStatus SubmitAWDMetricResolveStats(void)
err = CreateResolveStatsList(&newResolveStatsList);
require_noerr_quiet(err, exit);
+ KQueueLock(&mDNSStorage);
domainList = gResolveStatsList;
serverList = gResolveStatsServerList;
-
- KQueueLock(&mDNSStorage);
gResolveStatsList = newResolveStatsList;
gResolveStatsServerList = NULL;
gResolveStatsNextServerID = 0;
@@ -1762,14 +1728,6 @@ mDNSlocal mStatus AddAWDDNSDomainStats(AWDMDNSResponderDNSStatistics *inMetric,
mStatus err;
AWDDNSDomainStats * awdStats;
- if (inSet->histAny)
- {
- err = CreateAWDDNSDomainStats(inSet->histAny, inDomain, inForCell, AWDDNSDomainStats_RecordType_Any, &awdStats);
- require_noerr_quiet(err, exit);
-
- [inMetric addStats:awdStats];
- [awdStats release];
- }
if (inSet->histA)
{
err = CreateAWDDNSDomainStats(inSet->histA, inDomain, inForCell, AWDDNSDomainStats_RecordType_A, &awdStats);
@@ -1798,7 +1756,6 @@ exit:
mDNSlocal void LogDNSHistSet(const DNSHistSet *inSet, const char *inDomain, mDNSBool inForCell)
{
- if (inSet->histAny) LogDNSHist(inSet->histAny, inDomain, inForCell, "Any");
if (inSet->histA) LogDNSHist(inSet->histA, inDomain, inForCell, "A");
if (inSet->histAAAA) LogDNSHist(inSet->histAAAA, inDomain, inForCell, "AAAA");
}
diff --git a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
index c33c1663..d8697fae 100644
--- a/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
+++ b/mDNSResponder/mDNSMacOSX/mDNSMacOSX.c
@@ -1835,7 +1835,7 @@ mDNSlocal int mDNSPlatformGetSocktFd(void *sockCxt, mDNSTransport_Type transType
}
}
-mDNSexport void mDNSPlatformSetSocktOpt(void *sockCxt, mDNSTransport_Type transType, mDNSAddr_Type addrType, DNSQuestion *q)
+mDNSexport void mDNSPlatformSetSocktOpt(void *sockCxt, mDNSTransport_Type transType, mDNSAddr_Type addrType, const DNSQuestion *q)
{
int sockfd;
char unenc_name[MAX_ESCAPED_DOMAIN_NAME];
@@ -6966,7 +6966,19 @@ mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers,
else
{
LogInfo("mDNSPlatformSetDNSConfig: config->n_resolver = %d, generation %llu, last %llu", config->n_resolver, config->generation, m->p->LastConfigGeneration);
- if (m->p->LastConfigGeneration == config->generation)
+
+ // For every network change, the search domain list is updated.
+ // This update is done without regard for generation number because it is
+ // not an expensive update and it keeps the search domain list in sync (even when
+ // a network change occurs, while currently processing a network
+ // change).
+ //
+ // For every DNS configuration change, the DNS server list is updated.
+ // This update is NOT done every network change because it may involve
+ // updating cache entries which worst-case is expensive. Setting the generation
+ // per DNS server list change keeps the list in sync with configd.
+
+ if (setservers && m->p->LastConfigGeneration == config->generation)
{
LogInfo("mDNSPlatformSetDNSConfig: generation number %llu same, not processing", config->generation);
dns_configuration_free(config);
@@ -6992,21 +7004,13 @@ mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers,
ConfigResolvers(m, config, kScopeServiceID, setsearch, setservers, &sdc, resolverGroupID);
- // Acking provides a hint that we processed this current configuration and
- // we will use that from now on, assuming we don't get another one immediately
- // after we return from here.
+ // Acking provides a hint to other processes that the current DNS configuration has completed
+ // its update. When configd receives the ack, it publishes a notification.
+ // Applications monitoring the notification then know when to re-issue their DNS queries
+ // after a network change occurs.
if (ackConfig)
{
// Note: We have to set the generation number here when we are acking.
- // For every DNS configuration change, we do the following:
- //
- // 1) Copy dns configuration, handle search domains change
- // 2) Copy dns configuration, handle dns server change
- //
- // If we update the generation number at step (1), we won't process the
- // DNS servers the second time because generation number would be the same.
- // As we ack only when we process dns servers, we set the generation number
- // during acking.
m->p->LastConfigGeneration = config->generation;
LogInfo("mDNSPlatformSetDNSConfig: Acking configuration setservers %d, setsearch %d", setservers, setsearch);
AckConfigd(m, config);
diff --git a/mDNSResponder/mDNSPosix/Responder.c b/mDNSResponder/mDNSPosix/Responder.c
index 3996b7b9..7a77bcdf 100755
--- a/mDNSResponder/mDNSPosix/Responder.c
+++ b/mDNSResponder/mDNSPosix/Responder.c
@@ -503,6 +503,7 @@ static mStatus RegisterServicesInFile(const char *filePath)
{
mStatus status = mStatus_NoError;
FILE * fp = fopen(filePath, "r");
+ int rv;
if (fp == NULL) {
return mStatus_UnknownErr;
@@ -603,7 +604,8 @@ static mStatus RegisterServicesInFile(const char *filePath)
status = mStatus_UnknownErr;
}
- assert(0 == fclose(fp));
+ rv = fclose(fp);
+ assert(rv == 0);
return status;
}
diff --git a/mDNSResponder/mDNSPosix/mDNSPosix.c b/mDNSResponder/mDNSPosix/mDNSPosix.c
index 07633703..857c5832 100755
--- a/mDNSResponder/mDNSPosix/mDNSPosix.c
+++ b/mDNSResponder/mDNSPosix/mDNSPosix.c
@@ -584,11 +584,20 @@ mDNSexport mDNSu32 mDNSPlatformInterfaceIndexfromInterfaceID(mDNS *const m, mDNS
// interface must have already been deregistered with the mDNS core.
mDNSlocal void FreePosixNetworkInterface(PosixNetworkInterface *intf)
{
+ int rv;
assert(intf != NULL);
if (intf->intfName != NULL) free((void *)intf->intfName);
- if (intf->multicastSocket4 != -1) assert(close(intf->multicastSocket4) == 0);
+ if (intf->multicastSocket4 != -1)
+ {
+ rv = close(intf->multicastSocket4);
+ assert(rv == 0);
+ }
#if HAVE_IPV6
- if (intf->multicastSocket6 != -1) assert(close(intf->multicastSocket6) == 0);
+ if (intf->multicastSocket6 != -1)
+ {
+ rv = close(intf->multicastSocket6);
+ assert(rv == 0);
+ }
#endif
// Move interface to the RecentInterfaces list for a minute
@@ -851,7 +860,13 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf
}
// Clean up
- if (err != 0 && *sktPtr != -1) { assert(close(*sktPtr) == 0); *sktPtr = -1; }
+ if (err != 0 && *sktPtr != -1)
+ {
+ int rv;
+ rv = close(*sktPtr);
+ assert(rv == 0);
+ *sktPtr = -1;
+ }
assert((err == 0) == (*sktPtr != -1));
return err;
}
@@ -1353,11 +1368,20 @@ mDNSexport mStatus mDNSPlatformInit(mDNS *const m)
// In our case all we need to do is to tear down every network interface.
mDNSexport void mDNSPlatformClose(mDNS *const m)
{
+ int rv;
assert(m != NULL);
ClearInterfaceList(m);
- if (m->p->unicastSocket4 != -1) assert(close(m->p->unicastSocket4) == 0);
+ if (m->p->unicastSocket4 != -1)
+ {
+ rv = close(m->p->unicastSocket4);
+ assert(rv == 0);
+ }
#if HAVE_IPV6
- if (m->p->unicastSocket6 != -1) assert(close(m->p->unicastSocket6) == 0);
+ if (m->p->unicastSocket6 != -1)
+ {
+ rv = close(m->p->unicastSocket6);
+ assert(rv == 0);
+ }
#endif
}
@@ -1662,7 +1686,7 @@ mDNSexport mDNSBool mDNSPlatformInterfaceIsD2D(mDNSInterfaceID InterfaceID)
return mDNSfalse;
}
-mDNSexport void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, DNSQuestion *q)
+mDNSexport void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, const DNSQuestion *q)
{
(void) sock;
(void) transType;
diff --git a/mDNSResponder/mDNSPosix/mDNSUNP.c b/mDNSResponder/mDNSPosix/mDNSUNP.c
index 3cfeac6e..a7aafb27 100755
--- a/mDNSResponder/mDNSPosix/mDNSUNP.c
+++ b/mDNSResponder/mDNSPosix/mDNSUNP.c
@@ -199,7 +199,9 @@ gotError:
}
done:
if (sockfd != -1) {
- assert(close(sockfd) == 0);
+ int rv;
+ rv = close(sockfd);
+ assert(rv == 0);
}
if (fp != NULL) {
fclose(fp);
diff --git a/mDNSResponder/mDNSShared/dns_sd.h b/mDNSResponder/mDNSShared/dns_sd.h
index 25a53478..e34c6d91 100644
--- a/mDNSResponder/mDNSShared/dns_sd.h
+++ b/mDNSResponder/mDNSShared/dns_sd.h
@@ -66,7 +66,7 @@
*/
#ifndef _DNS_SD_H
-#define _DNS_SD_H 7652004
+#define _DNS_SD_H 7653011
#ifdef __cplusplus
extern "C" {
diff --git a/mDNSResponder/mDNSWindows/mDNSWin32.c b/mDNSResponder/mDNSWindows/mDNSWin32.c
index 011125b9..f2c43190 100755
--- a/mDNSResponder/mDNSWindows/mDNSWin32.c
+++ b/mDNSResponder/mDNSWindows/mDNSWin32.c
@@ -2152,7 +2152,7 @@ mDNSexport mStatus mDNSPlatformRetrieveTCPInfo(mDNS *const m, mDNSAddr *laddr, m
return mStatus_UnsupportedErr;
}
-mDNSexport void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, DNSQuestion *q)
+mDNSexport void mDNSPlatformSetSocktOpt(void *sock, mDNSTransport_Type transType, mDNSAddr_Type addrType, const DNSQuestion *q)
{
(void) sock;
(void) transType;