summaryrefslogtreecommitdiff
path: root/mdns_tinysvcmdns.c
diff options
context:
space:
mode:
authorMke Brady <mikebrady@eircom.net>2014-11-28 08:46:55 +0000
committerMke Brady <mikebrady@eircom.net>2014-11-28 08:46:55 +0000
commit44c34f6dab6fb80d08418a9f328c674d6c644fd6 (patch)
treea40c384fef857606af39c53c0ee4e906b2e72a95 /mdns_tinysvcmdns.c
parenta730ad97ec80d6f20c902d5f0f1b19cc7c0f617b (diff)
Add .local to hostname if it's not already there. Honour the timings suggested in RFC 6762 Section 10.
Diffstat (limited to 'mdns_tinysvcmdns.c')
-rw-r--r--mdns_tinysvcmdns.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/mdns_tinysvcmdns.c b/mdns_tinysvcmdns.c
index f92d8c1..19bdce4 100644
--- a/mdns_tinysvcmdns.c
+++ b/mdns_tinysvcmdns.c
@@ -57,13 +57,10 @@ static int mdns_tinysvcmdns_register(char *apname, int port) {
// will not work if the hostname doesn't end in .local
char *hostend = hostname + strlen(hostname);
- if ((strlen(hostname) > 6) &&
- strcmp(hostend - 6, ".local"))
- {
- strcat(hostname, ".local");
+ if ((strlen(hostname) < strlen(".local")) || (strcmp(hostend - 6, ".local")!=0)) {
+ strcat(hostname, ".local");
}
-
-
+
if (getifaddrs(&ifalist) < 0)
{
warn("tinysvcmdns: getifaddrs() failed");
@@ -80,7 +77,7 @@ static int mdns_tinysvcmdns_register(char *apname, int port) {
{
uint32_t main_ip = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr;
- mdnsd_set_hostname(svr, hostname, main_ip);
+ mdnsd_set_hostname(svr, hostname, main_ip); // TTL should be 120 seconds
break;
}
else if (!(ifa->ifa_flags & IFF_LOOPBACK) && ifa->ifa_addr &&
@@ -88,7 +85,7 @@ static int mdns_tinysvcmdns_register(char *apname, int port) {
{
struct in6_addr *addr = &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr;
- mdnsd_set_hostname_v6(svr, hostname, addr);
+ mdnsd_set_hostname_v6(svr, hostname, addr); // TTL should be 120 seconds
break;
}
}
@@ -110,13 +107,13 @@ static int mdns_tinysvcmdns_register(char *apname, int port) {
{
case AF_INET: { // ipv4
uint32_t ip = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr;
- struct rr_entry *a_e = rr_create_a(create_nlabel(hostname), ip);
+ struct rr_entry *a_e = rr_create_a(create_nlabel(hostname), ip); // TTL should be 120 seconds
mdnsd_add_rr(svr, a_e);
}
break;
case AF_INET6: { // ipv6
struct in6_addr *addr = &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr;
- struct rr_entry *aaaa_e = rr_create_aaaa(create_nlabel(hostname), addr);
+ struct rr_entry *aaaa_e = rr_create_aaaa(create_nlabel(hostname), addr); // TTL should be 120 seconds
mdnsd_add_rr(svr, aaaa_e);
}
break;
@@ -131,7 +128,7 @@ static int mdns_tinysvcmdns_register(char *apname, int port) {
"_raop._tcp.local",
port,
NULL,
- txt);
+ txt); // TTL should be 75 minutes, i.e. 4500 seconds
mdns_service_destroy(svc);