# HG changeset patch
# Node ID e2dc00de6f4f989b672d91b022b54ab7c17b35f2
# Parent  4e78a8475ee46b486ee30c2cb852a4fb5d12d39b
diff --git a/traversity-test/traversity-test.c b/traversity-test/traversity-test.c
--- a/traversity-test/traversity-test.c
+++ b/traversity-test/traversity-test.c
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #include <glib.h>
 
 #include <traversity.h>
diff --git a/traversity/traversity.h.in b/traversity/traversity.h.in
--- a/traversity/traversity.h.in
+++ b/traversity/traversity.h.in
@@ -1,3 +1,23 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
 #ifndef TRAVERSITY_TRAVERSITY_H
 #define TRAVERSITY_TRAVERSITY_H
 
diff --git a/traversity/traversitycore.c b/traversity/traversitycore.c
--- a/traversity/traversitycore.c
+++ b/traversity/traversitycore.c
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #include <gio/gnetworking.h>
 
 #include "traversitycore.h"
diff --git a/traversity/traversitycore.h b/traversity/traversitycore.h
--- a/traversity/traversitycore.h
+++ b/traversity/traversitycore.h
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #if !defined(TRAVERSITY_GLOBAL_HEADER_INSIDE) && !defined(TRAVERSITY_COMPILATION)
 # error "only <traversity.h> may be included directly"
 #endif
@@ -12,7 +33,7 @@
  *
  * The error domain that the library uses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 #define TRAVERSITY_DOMAIN (g_quark_from_static_string("traversity"))
 
@@ -22,7 +43,7 @@
  *
  * Flags that may be passed to [func@Traversity.core_init].
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 typedef enum /*< flags >*/ {
 	TRAVERSITY_CORE_FLAGS_NONE = 1 << 0,
@@ -36,7 +57,7 @@
  *
  * Initializes the library with @flags.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_core_init(TraversityCoreFlags flags);
 
@@ -45,7 +66,7 @@
  *
  * Uninitializes the library.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_core_uninit(void);
 
@@ -58,11 +79,10 @@
  * Returns: (transfer full) (element-type utf8): The list of all local IP
  *          addresses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 GList *traversity_core_get_all_local_ips(GError **error);
 
 G_END_DECLS
 
 #endif /* TRAVERSITY_CORE_H */
-
diff --git a/traversity/traversitycoreunix.c b/traversity/traversitycoreunix.c
--- a/traversity/traversitycoreunix.c
+++ b/traversity/traversitycoreunix.c
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #ifdef HAVE_CONFIG_H
 # include <config.h>
 #endif /* HAVE_CONFIG_H */
diff --git a/traversity/traversitycorewin32.c b/traversity/traversitycorewin32.c
--- a/traversity/traversitycorewin32.c
+++ b/traversity/traversitycorewin32.c
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #include <stdio.h>
 
 #include <winsock2.h>
diff --git a/traversity/traversitydiscoverer.c b/traversity/traversitydiscoverer.c
--- a/traversity/traversitydiscoverer.c
+++ b/traversity/traversitydiscoverer.c
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #include "traversitydiscoverer.h"
 
 #include "traversityenums.h"
@@ -37,33 +58,31 @@
 	TraversityDiscoverer *discoverer = TRAVERSITY_DISCOVERER(obj);
 
 	switch(param_id) {
-		case PROP_STATUS:
-			g_value_set_enum(value,
-			                 traversity_discoverer_get_status(discoverer));
-			break;
-		case PROP_ERROR:
-			g_value_set_boxed(value,
-			                  traversity_discoverer_get_error(discoverer));
-			break;
-		case PROP_LOCAL_IPV4:
-			g_value_set_object(value,
-			                   traversity_discoverer_get_local_ipv4(discoverer));
-			break;
-		case PROP_LOCAL_IPV6:
-			g_value_set_object(value,
-			                   traversity_discoverer_get_local_ipv6(discoverer));
-			break;
-		case PROP_PUBLIC_IPV4:
-			g_value_set_object(value,
-			                   traversity_discoverer_get_public_ipv4(discoverer));
-			break;
-		case PROP_PUBLIC_IPV6:
-			g_value_set_object(value,
-			                   traversity_discoverer_get_public_ipv6(discoverer));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
+	case PROP_STATUS:
+		g_value_set_enum(value, traversity_discoverer_get_status(discoverer));
+		break;
+	case PROP_ERROR:
+		g_value_set_boxed(value, traversity_discoverer_get_error(discoverer));
+		break;
+	case PROP_LOCAL_IPV4:
+		g_value_set_object(value,
+		                   traversity_discoverer_get_local_ipv4(discoverer));
+		break;
+	case PROP_LOCAL_IPV6:
+		g_value_set_object(value,
+		                   traversity_discoverer_get_local_ipv6(discoverer));
+		break;
+	case PROP_PUBLIC_IPV4:
+		g_value_set_object(value,
+		                   traversity_discoverer_get_public_ipv4(discoverer));
+		break;
+	case PROP_PUBLIC_IPV6:
+		g_value_set_object(value,
+		                   traversity_discoverer_get_public_ipv6(discoverer));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
 	}
 }
 
@@ -74,25 +93,25 @@
 	TraversityDiscoverer *discoverer = TRAVERSITY_DISCOVERER(obj);
 
 	switch(param_id) {
-		case PROP_LOCAL_IPV4:
-			traversity_discoverer_set_local_ipv4(discoverer,
-			                                     g_value_get_object(value));
-			break;
-		case PROP_LOCAL_IPV6:
-			traversity_discoverer_set_local_ipv6(discoverer,
-			                                     g_value_get_object(value));
-			break;
-		case PROP_PUBLIC_IPV4:
-			traversity_discoverer_set_public_ipv4(discoverer,
-			                                      g_value_get_object(value));
-			break;
-		case PROP_PUBLIC_IPV6:
-			traversity_discoverer_set_public_ipv6(discoverer,
-			                                      g_value_get_object(value));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
+	case PROP_LOCAL_IPV4:
+		traversity_discoverer_set_local_ipv4(discoverer,
+		                                     g_value_get_object(value));
+		break;
+	case PROP_LOCAL_IPV6:
+		traversity_discoverer_set_local_ipv6(discoverer,
+		                                     g_value_get_object(value));
+		break;
+	case PROP_PUBLIC_IPV4:
+		traversity_discoverer_set_public_ipv4(discoverer,
+		                                      g_value_get_object(value));
+		break;
+	case PROP_PUBLIC_IPV6:
+		traversity_discoverer_set_public_ipv6(discoverer,
+		                                      g_value_get_object(value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
 	}
 }
 
@@ -131,7 +150,7 @@
 	 * The [enum@Traversity.DiscovererStatus] that represents the state of this
 	 * discoverer.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_STATUS] = g_param_spec_enum(
 		"status", "status",
@@ -145,7 +164,7 @@
 	 *
 	 * The error from the last discovery attempt.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_ERROR] = g_param_spec_boxed(
 		"error", "error",
@@ -158,7 +177,7 @@
 	 *
 	 * The local IPv4 address if found or %NULL.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_LOCAL_IPV4] = g_param_spec_object(
 		"local-ipv4", "local-ipv4",
@@ -171,7 +190,7 @@
 	 *
 	 * The local IPv6 address if found or %NULL.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_LOCAL_IPV6] = g_param_spec_object(
 		"local-ipv6", "local-ipv6",
@@ -184,7 +203,7 @@
 	 *
 	 * The public IPv4 address if found or %NULL.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_PUBLIC_IPV4] = g_param_spec_object(
 		"public-ipv4", "public-ipv4",
@@ -197,7 +216,7 @@
 	 *
 	 * The public IPv6 address if found or %NULL.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_PUBLIC_IPV6] = g_param_spec_object(
 		"public-ipv6", "public-ipv6",
@@ -388,4 +407,3 @@
 		                         properties[PROP_PUBLIC_IPV6]);
 	}
 }
-
diff --git a/traversity/traversitydiscoverer.h b/traversity/traversitydiscoverer.h
--- a/traversity/traversitydiscoverer.h
+++ b/traversity/traversitydiscoverer.h
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #if !defined(TRAVERSITY_GLOBAL_HEADER_INSIDE) && !defined(TRAVERSITY_COMPILATION)
 # error "only <traversity.h> may be included directly"
 #endif
@@ -25,7 +46,7 @@
  *
  * A status that represents the state of a [class@Traversity.Discoverer].
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 typedef enum {
 	TRAVERSITY_DISCOVERER_STATUS_UNDISCOVERED = -1,
@@ -40,7 +61,7 @@
  * A discoverer is an abstract class that defines the interface for discovering
  * external IP addresses and gateway devices.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 
 #define TRAVERSITY_TYPE_DISCOVERER (traversity_discoverer_get_type())
@@ -69,7 +90,7 @@
  * the [property@Traversity.Discoverer:status] or the specific IP address that
  * you are interested in.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_discoverer_discover(TraversityDiscoverer *discoverer);
 
@@ -85,7 +106,7 @@
  *
  * This method is only meant to be called by subclasses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_discoverer_update_status(TraversityDiscoverer *discoverer, TraversityDiscovererStatus status, GError *error);
 
@@ -97,7 +118,7 @@
  *
  * Returns: The status of the discoverer.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 TraversityDiscovererStatus traversity_discoverer_get_status(TraversityDiscoverer *discoverer);
 
@@ -111,7 +132,7 @@
  * Returns: (transfer none): The error from the last discover run or %NULL if
  *          there was no error.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 GError *traversity_discoverer_get_error(TraversityDiscoverer *discoverer);
 
@@ -126,7 +147,7 @@
  *
  * Returns: (transfer none) (nullable): The discovered IPv4 address or %NULL.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 GInetAddress *traversity_discoverer_get_local_ipv4(TraversityDiscoverer *discoverer);
 
@@ -139,7 +160,7 @@
  *
  * Note: This should only be called by subclasses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_discoverer_set_local_ipv4(TraversityDiscoverer *discoverer, GInetAddress *local_ipv4);
 
@@ -154,7 +175,7 @@
  *
  * Returns: (transfer none) (nullable): The discovered IPv6 address or %NULL.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 GInetAddress *traversity_discoverer_get_local_ipv6(TraversityDiscoverer *discoverer);
 
@@ -167,7 +188,7 @@
  *
  * Note: This should only be called by subclasses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_discoverer_set_local_ipv6(TraversityDiscoverer *discoverer, GInetAddress *local_ipv6);
 
@@ -182,7 +203,7 @@
  *
  * Returns: (transfer none) (nullable): The discovered IPv4 address or %NULL.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 GInetAddress *traversity_discoverer_get_public_ipv4(TraversityDiscoverer *discoverer);
 
@@ -195,7 +216,7 @@
  *
  * Note: This should only be called by subclasses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_discoverer_set_public_ipv4(TraversityDiscoverer *discoverer, GInetAddress *public_ipv4);
 
@@ -210,7 +231,7 @@
  *
  * Returns: (transfer none) (nullable): The discovered IPv6 address or %NULL.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 GInetAddress *traversity_discoverer_get_public_ipv6(TraversityDiscoverer *discoverer);
 
@@ -223,11 +244,10 @@
  *
  * Note: This should only be called by subclasses.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 void traversity_discoverer_set_public_ipv6(TraversityDiscoverer *discoverer, GInetAddress *public_ipv6);
 
 G_END_DECLS
 
 #endif /* TRAVERSITY_DISCOVERER_H */
-
diff --git a/traversity/traversityupnpdiscoverer.c b/traversity/traversityupnpdiscoverer.c
--- a/traversity/traversityupnpdiscoverer.c
+++ b/traversity/traversityupnpdiscoverer.c
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #include <tmpl-glib.h>
 
 #include "traversityupnpdiscoverer.h"
@@ -200,17 +221,16 @@
 	TraversityUpnpDiscoverer *upnp = TRAVERSITY_UPNP_DISCOVERER(obj);
 
 	switch(param_id) {
-		case PROP_HOST_ADDRESS:
-			g_value_set_string(value,
-			                   traversity_upnp_discoverer_get_host_address(upnp));
-			break;
-		case PROP_HOST_PORT:
-			g_value_set_int(value,
-			                traversity_upnp_discoverer_get_host_port(upnp));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
+	case PROP_HOST_ADDRESS:
+		g_value_set_string(value,
+		                   traversity_upnp_discoverer_get_host_address(upnp));
+		break;
+	case PROP_HOST_PORT:
+		g_value_set_int(value, traversity_upnp_discoverer_get_host_port(upnp));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
 	}
 }
 
@@ -221,17 +241,16 @@
 	TraversityUpnpDiscoverer *upnp = TRAVERSITY_UPNP_DISCOVERER(obj);
 
 	switch(param_id) {
-		case PROP_HOST_ADDRESS:
-			traversity_upnp_discoverer_set_host_address(upnp,
-			                                            g_value_get_string(value));
-			break;
-		case PROP_HOST_PORT:
-			traversity_upnp_discoverer_set_host_port(upnp,
-			                                         g_value_get_int(value));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
+	case PROP_HOST_ADDRESS:
+		traversity_upnp_discoverer_set_host_address(upnp,
+		                                            g_value_get_string(value));
+		break;
+	case PROP_HOST_PORT:
+		traversity_upnp_discoverer_set_host_port(upnp, g_value_get_int(value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
 	}
 }
 
@@ -280,11 +299,10 @@
 	 * This defaults to 239.255.255.250 which is the address to use per the
 	 * specification.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_HOST_ADDRESS] = g_param_spec_string(
-		"host-address", "host-address",
-		"The host address to use.",
+		"host-address", NULL, NULL,
 		TRAVERSITY_UPNP_DISCOVERER_HTTPMU_HOST_ADDRESS,
 		G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
 
@@ -295,11 +313,10 @@
 	 *
 	 * This defaults to 1900 per the specification.
 	 *
-	 * Since: 1.0.0
+	 * Since: 0.1
 	 */
 	properties[PROP_HOST_PORT] = g_param_spec_int(
-		"host-port", "host-port",
-		"The host port to use.",
+		"host-port", NULL, NULL,
 		0, 65535, TRAVERSITY_UPNP_DISCOVERER_HTTPMU_HOST_PORT,
 		G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
 
@@ -336,4 +353,3 @@
 
 	return upnp->host_port;
 }
-
diff --git a/traversity/traversityupnpdiscoverer.h b/traversity/traversityupnpdiscoverer.h
--- a/traversity/traversityupnpdiscoverer.h
+++ b/traversity/traversityupnpdiscoverer.h
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2022-2025 Traversity Developers
+ *
+ * Traversity is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the AUTHORS file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
 #if !defined(TRAVERSITY_GLOBAL_HEADER_INSIDE) && !defined(TRAVERSITY_COMPILATION)
 # error "only <traversity.h> may be included directly"
 #endif
@@ -17,7 +38,7 @@
  *
  * A discoverer that support Universal Plug and Play.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 
 #define TRAVERSITY_TYPE_UPNP_DISCOVERER (traversity_upnp_discoverer_get_type())
@@ -32,7 +53,7 @@
  *
  * Returns: (transfer full): The new discoverer.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 TraversityDiscoverer *traversity_upnp_discoverer_new(void);
 
@@ -46,7 +67,7 @@
  *
  * Returns: (transfer full): The new discoverer.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 TraversityDiscoverer *traversity_upnp_discoverer_new_custom(const char *host_address, int host_port);
 
@@ -58,7 +79,7 @@
  *
  * Returns: The host address.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 const char *traversity_upnp_discoverer_get_host_address(TraversityUpnpDiscoverer *upnp);
 
@@ -70,11 +91,10 @@
  *
  * Returns: The host port.
  *
- * Since: 1.0.0
+ * Since: 0.1
  */
 int traversity_upnp_discoverer_get_host_port(TraversityUpnpDiscoverer *upnp);
 
 G_END_DECLS
 
 #endif /* TRAVERSITY_UPNP_DISCOVERER_H */
-
