$OpenBSD: patch-src_handle_connect_c,v 1.1 2018/06/03 14:20:43 jasper Exp $

Index: src/handle_connect.c
--- src/handle_connect.c.orig
+++ src/handle_connect.c
@@ -29,7 +29,9 @@ Contributors:
 #include "tls_mosq.h"
 #include "util_mosq.h"
 
-#ifdef WITH_UUID
+#if defined(WITH_UUID_CREATE)
+#  include <uuid.h>
+#elif defined(WITH_UUID)
 #  include <uuid/uuid.h>
 #endif
 
@@ -40,13 +42,17 @@ Contributors:
 static char *client_id_gen(struct mosquitto_db *db, int *idlen, const char *auto_id_prefix, int auto_id_prefix_len)
 {
 	char *client_id;
-#ifdef WITH_UUID
+#if defined(WITH_UUID_CREATE)
 	uuid_t uuid;
+	uint32_t status;
+	char *out;
+#elif defined(WITH_UUID)
+	uuid_t uuid;
 #else
 	int i;
 #endif
 
-#ifdef WITH_UUID
+#if defined(WITH_UUID) || defined(WITH_UUID_CREATE)
 	*idlen = 36 + auto_id_prefix_len;
 #else
 	*idlen = 64 + auto_id_prefix_len;
@@ -61,7 +67,18 @@ static char *client_id_gen(struct mosquitto_db *db, in
 	}
 
 
-#ifdef WITH_UUID
+#if defined(WITH_UUID_CREATE)
+	uuid_create(&uuid, &status);
+	if (status != uuid_s_ok){
+		return NULL;
+	}
+	uuid_to_string(&uuid, &out, &status);
+	if (status != uuid_s_ok){
+		return NULL;
+	}
+	memcpy(&client_id[auto_id_prefix_len], out, UUID_STR_LEN + 1);
+	free(out);
+#elif defined(WITH_UUID)
 	uuid_generate_random(uuid);
 	uuid_unparse_lower(uuid, &client_id[auto_id_prefix_len]);
 #else
