@@ -834,6 +834,7 @@ lws_create_adopt_udp2(struct lws *wsi, const char *ads,
834834
835835#if defined(LWS_WITH_IPV6 ) && defined(IPV6_V6ONLY )
836836 if (s -> dest .sa4 .sin_family == AF_INET6 &&
837+ !lws_sa46_is_ipv4_mapped (& s -> dest ) &&
837838 (!(wsi -> a .vhost -> options & LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY ) ||
838839 (wsi -> a .vhost -> options & LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE ))) {
839840 int opt = 1 ;
@@ -942,8 +943,7 @@ lws_create_adopt_udp2(struct lws *wsi, const char *ads,
942943#endif
943944
944945bail :
945-
946- /* caller must close */
946+ lws_close_free_wsi (wsi , LWS_CLOSE_STATUS_NOSTATUS , "adopt udp2 fail" );
947947
948948 return NULL ;
949949}
@@ -1024,6 +1024,7 @@ lws_create_adopt_udp2(struct lws *wsi, const char *ads,
10241024
10251025#if defined(LWS_WITH_IPV6 ) && defined(IPV6_V6ONLY )
10261026 if (dest .sa4 .sin_family == AF_INET6 &&
1027+ !lws_sa46_is_ipv4_mapped (& dest ) &&
10271028 (!(wsi -> a .vhost -> options & LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY ) ||
10281029 (wsi -> a .vhost -> options & LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE ))) {
10291030 int opt = 1 ;
@@ -1097,6 +1098,8 @@ lws_create_adopt_udp2(struct lws *wsi, const char *ads,
10971098resume :
10981099 compatible_close (sock .sockfd );
10991100bail :
1101+ lws_close_free_wsi (wsi , LWS_CLOSE_STATUS_NOSTATUS , "adopt udp2 fail" );
1102+
11001103 return NULL ;
11011104}
11021105#endif
0 commit comments