Reduce MDNS logging
If it's compiled with no debugging turned on we should not log all
the info and warning and stuff.
Change-Id: Ifacfeca81d24a8a542e3ce2eb0684643eb35e166
diff --git a/Android.mk b/Android.mk
index d277eec..575073e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -54,7 +54,7 @@
LOCAL_C_INCLUDES := external/mdnsresponder/mDNSShared
-LOCAL_CFLAGS := -O2 -g -W -Wall -D__ANDROID__ -D_GNU_SOURCE -DHAVE_IPV6 -DNOT_HAVE_SA_LEN -DUSES_NETLINK -DTARGET_OS_LINUX -fno-strict-aliasing -DHAVE_LINUX -DMDNS_UDS_SERVERPATH=\"/dev/socket/mdnsd\" -DMDNS_DEBUGMSGS=4
+LOCAL_CFLAGS := -O2 -g -W -Wall -D__ANDROID__ -D_GNU_SOURCE -DHAVE_IPV6 -DNOT_HAVE_SA_LEN -DUSES_NETLINK -DTARGET_OS_LINUX -fno-strict-aliasing -DHAVE_LINUX -DMDNS_UDS_SERVERPATH=\"/dev/socket/mdnsd\" -DMDNS_DEBUGMSGS=0
LOCAL_SYSTEM_SHARED_LIBRARIES := libmdnssd libc libcutils
diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
index c4674c3..ee0b335 100755
--- a/mDNSPosix/mDNSPosix.c
+++ b/mDNSPosix/mDNSPosix.c
@@ -475,7 +475,12 @@
mDNSlocal void GetUserSpecifiedRFC1034ComputerName(domainlabel *const namelabel)
{
int len = 0;
+#ifndef __ANDROID__
gethostname((char *)(&namelabel->c[1]), MAX_DOMAIN_LABEL);
+#else
+ // use an appropriate default label rather than the linux default of 'localhost'
+ strncpy(&namelabel->c[1], "Android", MAX_DOMAIN_LABEL);
+#endif
while (len < MAX_DOMAIN_LABEL && namelabel->c[len+1] && namelabel->c[len+1] != '.') len++;
namelabel->c[0] = len;
}
diff --git a/mDNSShared/PlatformCommon.c b/mDNSShared/PlatformCommon.c
index fc3c0b1..2fb530e 100644
--- a/mDNSShared/PlatformCommon.c
+++ b/mDNSShared/PlatformCommon.c
@@ -202,11 +202,15 @@
#ifdef __ANDROID__
switch (loglevel)
{
-// case MDNS_LOG_OPERATION: syslog_level = ANDROID_LOG_WARN; break;
-// case MDNS_LOG_SPS:
-// case MDNS_LOG_DEBUG: syslog_level = ANDROID_LOG_DEBUG; break;
-// case MDNS_LOG_INFO: syslog_level = ANDROID_LOG_INFO; break;
+ case MDNS_LOG_DEBUG: syslog_level = ANDROID_LOG_DEBUG; break;
+#if MDNS_DEBUGMSGS > 0
+ case MDNS_LOG_OPERATION: syslog_level = ANDROID_LOG_WARN; break;
+ case MDNS_LOG_SPS: syslog_level = ANDROID_LOG_DEBUG; break;
+ case MDNS_LOG_INFO: syslog_level = ANDROID_LOG_INFO; break;
default: syslog_level = ANDROID_LOG_ERROR; break;
+#else
+ default: return;
+#endif
}
__android_log_print(syslog_level, "mdns", "%s", buffer);
#else
diff --git a/mDNSShared/dns_sd.h b/mDNSShared/dns_sd.h
index 607ebcd..be39083 100644
--- a/mDNSShared/dns_sd.h
+++ b/mDNSShared/dns_sd.h
@@ -1967,6 +1967,24 @@
);
+typedef void (DNSSD_API *DNSHostnameChangedReply)
+ (
+ DNSServiceRef sdRef,
+ DNSServiceFlags flags,
+ DNSServiceErrorType errorCode,
+ const char *hostname,
+ void *context
+ );
+
+DNSServiceErrorType DNSSD_API DNSSetHostname
+ (
+ DNSServiceRef *sdRef,
+ DNSServiceFlags flags,
+ const char *hostname,
+ DNSHostnameChangedReply callBack,
+ void *context
+ );
+
/*********************************************************************************************
*
* General Utility Functions
diff --git a/mDNSShared/dnssd_clientstub.c b/mDNSShared/dnssd_clientstub.c
index 30f63fc..9af6135 100644
--- a/mDNSShared/dnssd_clientstub.c
+++ b/mDNSShared/dnssd_clientstub.c
@@ -841,6 +841,9 @@
case enumeration_request:
if (sdr->AppCallback)((DNSServiceDomainEnumReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, sdr->AppContext);
break;
+ case sethost_request:
+ if (sdr->AppCallback)((DNSServiceSetHostReply) sdr->AppCallback)(sdr, 0, error, NULL, sdr->AppContext);
+ break;
case connection_request:
// This means Register Record, walk the list of DNSRecords to do the callback
rec = sdr->rec;
@@ -1380,6 +1383,43 @@
return err;
}
+static void handle_hostname_changed_response(DNSServiceOp *const sdr, const CallbackHeader *const cbh, const char *data, const char *const end)
+ {
+ char replyHostname[256];
+
+ get_string(&data, end, replyHostname, sizeof(replyHostname));
+ if (!data) syslog(LOG_WARNING, "dnssd_clientstub handle_hsotname_changed_response: error reading result from daemon");
+ else ((DNSHostnameChangedReply)sdr->AppCallback)(sdr, cbh->cb_flags, cbh->cb_err, replyHostname, sdr->AppContext);
+ // MUST NOT touch sdr after invoking AppCallback -- client is allowed to dispose it from within callback function
+ }
+
+DNSServiceErrorType DNSSD_API DNSSetHostname
+ (
+ DNSServiceRef *sdRef,
+ DNSServiceFlags flags,
+ const char *hostname,
+ DNSHostnameChangedReply callBack,
+ void *context
+ )
+ {
+ char *ptr;
+ size_t len;
+ ipc_msg_hdr *hdr;
+ DNSServiceErrorType err = ConnectToServer(sdRef, flags, sethost_request, handle_hostname_changed_response, callBack, context);
+ if (err) return err;
+ len = sizeof(flags);
+ len += strlen(hostname) + 1;
+
+ hdr = create_hdr(sethost_request, &len, &ptr, (*sdRef)->primary ? 1 : 0, *sdRef);
+ if (!hdr) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; return kDNSServiceErr_NoMemory; }
+
+ put_flags(flags, &ptr);
+ put_string(hostname, &ptr);
+ err = deliver_request(hdr, *sdRef); // Will free hdr for us
+ if (err) { DNSServiceRefDeallocate(*sdRef); *sdRef = NULL; }
+ return err;
+ }
+
DNSServiceErrorType DNSSD_API DNSServiceSetDefaultDomainForUser(DNSServiceFlags flags, const char *domain);
DNSServiceErrorType DNSSD_API DNSServiceSetDefaultDomainForUser(DNSServiceFlags flags, const char *domain)
{
diff --git a/mDNSShared/dnssd_ipc.h b/mDNSShared/dnssd_ipc.h
index c02ca03..a46a979 100644
--- a/mDNSShared/dnssd_ipc.h
+++ b/mDNSShared/dnssd_ipc.h
@@ -139,7 +139,7 @@
port_mapping_request, // New in Leopard and B4W 2.0
addrinfo_request,
send_bpf, // New in SL
-
+ sethost_request,
cancel_request = 63
} request_op_t;
@@ -153,7 +153,8 @@
reg_record_reply_op, // Up to here is in Tiger and B4W 1.0.3
getproperty_reply_op, // New in B4W 1.0.4
port_mapping_reply_op, // New in Leopard and B4W 2.0
- addrinfo_reply_op
+ addrinfo_reply_op,
+ sethost_reply,
} reply_op_t;
#if defined(_WIN64)
diff --git a/mDNSShared/uds_daemon.c b/mDNSShared/uds_daemon.c
index f5dfd72..580b92e 100644
--- a/mDNSShared/uds_daemon.c
+++ b/mDNSShared/uds_daemon.c
@@ -2117,6 +2117,33 @@
else RmvAutoBrowseDomain(0, &answer->rdata->u.name);
}
+mDNSlocal mStatus handle_sethost_request(request_state *request)
+ {
+ get_flags(&request->msgptr, request->msgend);
+ char hostName[MAX_DOMAIN_LABEL];
+ int len = 0;
+
+ if (get_string(&request->msgptr, request->msgend, hostName, MAX_DOMAIN_LABEL) < 0) return(mStatus_BadParamErr);
+
+ LogOperation("%3d: DNSSetHostname(%X, %d, nonstr ) START",
+ request->sd, request->flags);
+
+ // if we start using this as a callback for notification when the hostname changes we may need to cleanup from it
+// request->terminate = sethost_termination_callback;
+
+ if(hostName[0] == 0) return mStatus_BadParamErr;
+
+ while (len < MAX_DOMAIN_LABEL && hostName[len+1] && hostName[len+1] != '.') len++;
+
+ strncpy(&(mDNSStorage.nicelabel.c[1]), hostName, len);
+ mDNSStorage.nicelabel.c[0] = len;
+ strncpy(&(mDNSStorage.hostlabel.c[1]), hostName, len);
+ mDNSStorage.hostlabel.c[0] = len;
+
+ mDNS_SetFQDN(&mDNSStorage);
+ return mStatus_NoError;
+ }
+
mDNSlocal mStatus handle_browse_request(request_state *request)
{
char regtype[MAX_ESCAPED_DOMAIN_NAME], domain[MAX_ESCAPED_DOMAIN_NAME];
@@ -3759,6 +3786,7 @@
case addrinfo_request: min_size += sizeof(mDNSu32) + 4 /* v4/v6 */ + 1 /* hostname */; break;
case send_bpf: // Same as cancel_request below
case cancel_request: min_size = 0; break;
+ case sethost_request: min_size = sizeof(mDNSu32) + 1 /* hostname */; break;
default: LogMsg("ERROR: validate_message - unsupported req type: %d", req->hdr.op); min_size = -1; break;
}
@@ -3807,6 +3835,7 @@
case getproperty_request: handle_getproperty_request (req); break;
case port_mapping_request: err = handle_port_mapping_request(req); break;
case addrinfo_request: err = handle_addrinfo_request (req); break;
+ case sethost_request: err = handle_sethost_request (req); break;
case send_bpf: /* Do nothing for send_bpf */ break;
// These are all operations that work with an existing request_state object