miniupnpd: fix processing of v4 M-SEARCH received on v6 socket
So we don't answer with the v6 LOCATION to v4 clients anymore ! should fix #467 see #461
This commit is contained in:
parent
029383e5f4
commit
0af141d9c5
|
@ -1,5 +1,8 @@
|
||||||
$Id: Changelog.txt,v 1.464 2020/05/10 17:57:56 nanard Exp $
|
$Id: Changelog.txt,v 1.464 2020/05/10 17:57:56 nanard Exp $
|
||||||
|
|
||||||
|
2020/06/05:
|
||||||
|
fix handling of ipv4 M-SEARCH received on ipv6 sockets
|
||||||
|
|
||||||
2020/06/03:
|
2020/06/03:
|
||||||
configure --disable-fork to disable going to background
|
configure --disable-fork to disable going to background
|
||||||
improve upnp_get_portmapping_number_of_entries()
|
improve upnp_get_portmapping_number_of_entries()
|
||||||
|
|
|
@ -1126,7 +1126,13 @@ ProcessSSDPData(int s, const char *bufr, int n,
|
||||||
syslog(LOG_INFO, "SSDP M-SEARCH from %s ST: %.*s",
|
syslog(LOG_INFO, "SSDP M-SEARCH from %s ST: %.*s",
|
||||||
sender_str, st_len, st);
|
sender_str, st_len, st);
|
||||||
/* find in which sub network the client is */
|
/* find in which sub network the client is */
|
||||||
|
#ifdef ENABLE_IPV6
|
||||||
|
if((sender->sa_family == AF_INET) ||
|
||||||
|
(sender->sa_family == AF_INET6 &&
|
||||||
|
IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)sender)->sin6_addr)))
|
||||||
|
#else
|
||||||
if(sender->sa_family == AF_INET)
|
if(sender->sa_family == AF_INET)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (lan_addr == NULL)
|
if (lan_addr == NULL)
|
||||||
{
|
{
|
||||||
|
@ -1138,7 +1144,7 @@ ProcessSSDPData(int s, const char *bufr, int n,
|
||||||
announced_host = lan_addr->str;
|
announced_host = lan_addr->str;
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_IPV6
|
#ifdef ENABLE_IPV6
|
||||||
else
|
else if(sender->sa_family == AF_INET6)
|
||||||
{
|
{
|
||||||
/* IPv6 address with brackets */
|
/* IPv6 address with brackets */
|
||||||
#ifdef UPNP_STRICT
|
#ifdef UPNP_STRICT
|
||||||
|
@ -1178,6 +1184,13 @@ ProcessSSDPData(int s, const char *bufr, int n,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
else
|
||||||
|
{
|
||||||
|
syslog(LOG_ERR,
|
||||||
|
"Unknown address family %d for client %s",
|
||||||
|
sender->sa_family, sender_str);
|
||||||
|
return;
|
||||||
|
}
|
||||||
/* Responds to request with a device as ST header */
|
/* Responds to request with a device as ST header */
|
||||||
for(i = 0; known_service_types[i].s; i++)
|
for(i = 0; known_service_types[i].s; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue