From fa51a7225a530215eeb21691bf94346da35d248d Mon Sep 17 00:00:00 2001 From: Dirk Ziegelmeier Date: Mon, 21 Aug 2017 09:46:08 +0200 Subject: [PATCH] lwip_socket_drop_registered_mld6_memberships: Fix if_idx got lost :-( --- src/api/sockets.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/api/sockets.c b/src/api/sockets.c index a37b21c7..0c11251a 100644 --- a/src/api/sockets.c +++ b/src/api/sockets.c @@ -3693,12 +3693,16 @@ lwip_socket_drop_registered_mld6_memberships(int s) for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) { if (socket_ipv6_multicast_memberships[i].sock == sock) { ip_addr_t multi_addr; + u8_t if_idx; ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr); + if_idx = socket_ipv6_multicast_memberships[i].if_idx; + socket_ipv6_multicast_memberships[i].sock = NULL; socket_ipv6_multicast_memberships[i].if_idx = NETIF_NO_INDEX; ip6_addr_set_zero(&socket_ipv6_multicast_memberships[i].multi_addr); - netconn_join_leave_group_netif(sock->conn, &multi_addr, socket_ipv6_multicast_memberships[i].if_idx, NETCONN_LEAVE); + + netconn_join_leave_group_netif(sock->conn, &multi_addr, if_idx, NETCONN_LEAVE); } } done_socket(sock);