lwip/0133-allow-membership-to-register-multiple-times.patch
2024-06-14 17:32:41 +08:00

35 lines
1.5 KiB
Diff

From 3b23b3a69d71a862dfe7fca1b53b673dc868ffa5 Mon Sep 17 00:00:00 2001
From: wanfeng <wanfeng@kylinos.cn>
Date: Fri, 10 May 2024 15:11:12 +0800
Subject: [PATCH] allow membership to register multiple times
---
src/api/sockets.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/api/sockets.c b/src/api/sockets.c
index 04df15a..5a72b62 100644
--- a/src/api/sockets.c
+++ b/src/api/sockets.c
@@ -4501,7 +4501,7 @@ lwip_socket_register_membership(int s, unsigned int if_idx, const ip4_addr_t *mu
#else
for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
#endif
- if (socket_ipv4_multicast_memberships[i].sock == NULL) {
+ if (socket_ipv4_multicast_memberships[i].sock == NULL || (socket_ipv4_multicast_memberships[i].sock == sock)) {
socket_ipv4_multicast_memberships[i].sock = sock;
socket_ipv4_multicast_memberships[i].if_idx = if_idx;
ip4_addr_copy(socket_ipv4_multicast_memberships[i].multi_addr, *multi_addr);
@@ -4617,7 +4617,7 @@ lwip_socket_register_mld6_membership(int s, unsigned int if_idx, const ip6_addr_
#else
for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
#endif
- if (socket_ipv6_multicast_memberships[i].sock == NULL) {
+ if (socket_ipv6_multicast_memberships[i].sock == NULL || (socket_ipv6_multicast_memberships[i].sock == sock)) {
socket_ipv6_multicast_memberships[i].sock = sock;
socket_ipv6_multicast_memberships[i].if_idx = (u8_t)if_idx;
ip6_addr_copy(socket_ipv6_multicast_memberships[i].multi_addr, *multi_addr);
--
2.25.1