summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2020-04-13 18:35:38 +0200
committerJens Georg <mail@jensge.org>2020-04-13 18:35:38 +0200
commit94e709a23dbde90ceeccf9b3ec1d549a4b2090ae (patch)
tree48b04292fafd45350fb8f6610078c2c7bdfe69bd
parent5728c90082ff3c8a3a7ae59c5b661ce6ebf287e0 (diff)
downloadgssdp-94e709a23dbde90ceeccf9b3ec1d549a4b2090ae.tar.gz
socket-source: ::1 Should not set mcast interface
If we do that, we cannot send any packets, at least on Linux
-rw-r--r--libgssdp/gssdp-socket-source.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/libgssdp/gssdp-socket-source.c b/libgssdp/gssdp-socket-source.c
index 3dafc78..d1b0fdf 100644
--- a/libgssdp/gssdp-socket-source.c
+++ b/libgssdp/gssdp-socket-source.c
@@ -271,16 +271,20 @@ gssdp_socket_source_do_init (GInitable *initable,
} else {
guint port = SSDP_PORT;
- if (!gssdp_socket_mcast_interface_set (priv->socket,
- priv->address,
- (guint32) priv->index,
- &inner_error)) {
- g_propagate_prefixed_error (
- error,
- inner_error,
- "Failed to set multicast interface");
-
- goto error;
+ if (family != G_SOCKET_FAMILY_IPV6 ||
+ (!g_inet_address_get_is_loopback (priv->address))) {
+
+ if (!gssdp_socket_mcast_interface_set (priv->socket,
+ priv->address,
+ (guint32) priv->index,
+ &inner_error)) {
+ g_propagate_prefixed_error (
+ error,
+ inner_error,
+ "Failed to set multicast interface");
+
+ goto error;
+ }
}
/* Use user-supplied or random port for the socket source used