diff options
author | Jens Georg <mail@jensge.org> | 2020-04-13 18:35:38 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2020-04-13 18:35:38 +0200 |
commit | 94e709a23dbde90ceeccf9b3ec1d549a4b2090ae (patch) | |
tree | 48b04292fafd45350fb8f6610078c2c7bdfe69bd | |
parent | 5728c90082ff3c8a3a7ae59c5b661ce6ebf287e0 (diff) | |
download | gssdp-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.c | 24 |
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 |