aboutsummaryrefslogtreecommitdiff
path: root/cast/standalone_receiver/cast_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cast/standalone_receiver/cast_service.cc')
-rw-r--r--cast/standalone_receiver/cast_service.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/cast/standalone_receiver/cast_service.cc b/cast/standalone_receiver/cast_service.cc
index 0e3d9c9c..92ffce93 100644
--- a/cast/standalone_receiver/cast_service.cc
+++ b/cast/standalone_receiver/cast_service.cc
@@ -4,12 +4,16 @@
#include "cast/standalone_receiver/cast_service.h"
+#include <stdint.h>
+
+#include <array>
#include <utility>
#include "discovery/common/config.h"
#include "platform/api/tls_connection_factory.h"
#include "platform/base/interface_info.h"
#include "platform/base/tls_listen_options.h"
+#include "util/crypto/random_bytes.h"
#include "util/osp_logging.h"
#include "util/stringprintf.h"
@@ -19,6 +23,7 @@ namespace cast {
namespace {
constexpr uint16_t kDefaultCastServicePort = 8010;
+constexpr int kCastUniqueIdLength = 6;
constexpr int kDefaultMaxBacklogSize = 64;
const TlsListenOptions kDefaultListenOptions{kDefaultMaxBacklogSize};
@@ -69,8 +74,16 @@ CastService::CastService(CastService::Configuration config)
if (discovery_publisher_) {
ReceiverInfo info;
info.port = local_endpoint_.port;
- info.unique_id = HexEncode(config.interface.hardware_address.data(),
- config.interface.hardware_address.size());
+ if (config.interface.HasHardwareAddress()) {
+ info.unique_id = HexEncode(config.interface.hardware_address.data(),
+ config.interface.hardware_address.size());
+ } else {
+ OSP_LOG_WARN << "Hardware address for interface " << config.interface.name
+ << " is empty. Generating a random unique_id.";
+ std::array<uint8_t, kCastUniqueIdLength> random_bytes;
+ GenerateRandomBytes(random_bytes.data(), kCastUniqueIdLength);
+ info.unique_id = HexEncode(random_bytes.data(), kCastUniqueIdLength);
+ }
info.friendly_name = config.friendly_name;
info.model_name = config.model_name;
info.capabilities = kHasVideoOutput | kHasAudioOutput;