Browse Source

Fix multicast discovery to work again

Regression of commit 54e39e96351279381ee847d4dda5ed362c5dbe1a
and 898c38b13efcd6004fb3d462d83b7f4f99255aa0
Stefan Profanter 8 years ago
parent
commit
5508a094d7
2 changed files with 4 additions and 2 deletions
  1. 1 1
      src/server/ua_server_worker.c
  2. 3 1
      src/server/ua_services_discovery_multicast.c

+ 1 - 1
src/server/ua_server_worker.c

@@ -455,7 +455,7 @@ UA_UInt16 UA_Server_run_iterate(UA_Server *server, UA_Boolean waitInternal) {
     processDelayedCallbacks(server);
 #endif
 
-#if defined(UA_ENABLE_DISCOVERY_MULTICAST) && defined(UA_ENABLE_MULTITHREADING)
+#if defined(UA_ENABLE_DISCOVERY_MULTICAST) && !defined(UA_ENABLE_MULTITHREADING)
     if(server->config.applicationDescription.applicationType == UA_APPLICATIONTYPE_DISCOVERYSERVER) {
         UA_DateTime multicastNextRepeat = 0;
         // TODO multicastNextRepeat does not consider new input data (requests)

+ 3 - 1
src/server/ua_services_discovery_multicast.c

@@ -359,7 +359,7 @@ createFullServiceDomain(char *outServiceDomain, size_t maxLen,
         memcpy(&outServiceDomain[pos], hostname->data, hostnameLen);
         pos += hostnameLen;
     }
-    memcpy(&outServiceDomain[pos], "._opcua-tcp._tcp.local.", hostnameLen);
+    memcpy(&outServiceDomain[pos], "._opcua-tcp._tcp.local.", 23);
     pos += 23;
     outServiceDomain[pos] = 0;
 }
@@ -448,6 +448,7 @@ UA_Discovery_addRecord(UA_Server *server, const UA_String *servername,
         server->mdnsMainSrvAdded = UA_TRUE;
     }
 
+    // [servername]-[hostname]._opcua-tcp._tcp.local.
     char fullServiceDomain[63+24];
     createFullServiceDomain(fullServiceDomain, 63+24, servername, hostname);
 
@@ -475,6 +476,7 @@ UA_Discovery_addRecord(UA_Server *server, const UA_String *servername,
     char localDomain[65];
     memcpy(localDomain, hostname->data, maxHostnameLen);
     localDomain[maxHostnameLen] = '.';
+    localDomain[maxHostnameLen+1] = '\0';
 
     // [servername]-[hostname]._opcua-tcp._tcp.local. 86400 IN SRV 0 5 port [hostname].
     r = mdnsd_unique(server->mdnsDaemon, fullServiceDomain, QTYPE_SRV, 600,