summaryrefslogtreecommitdiff
path: root/kernel-8.0/freebsd-mcast-eaddrinuse.patch
blob: b93367265d35b204dd43c595a7b1777de05cbaad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--- sys/netinet/in_mcast.c.orig	2009-08-03 08:13:06.000000000 +0000
+++ sys/netinet/in_mcast.c	2009-09-09 01:35:06.000000000 +0000
@@ -1964,4 +1964,8 @@
 	if (idx == -1) {
 		is_new = 1;
+	} else if (sopt->sopt_name == IP_ADD_MEMBERSHIP) {
+		/* Trying to join the same Any-source group again. */
+		error = EADDRINUSE;
+		goto out_inp_locked;
 	} else {
 		inm = imo->imo_membership[idx];
@@ -2139,6 +2143,9 @@
 		}
 
-		if (!in_nullhost(gsa->sin.sin_addr))
+		if (!in_nullhost(gsa->sin.sin_addr)) {
 			INADDR_TO_IFP(mreqs.imr_interface, ifp);
+			if (ifp == NULL)
+				return (EADDRNOTAVAIL);
+		}
 
 		CTR3(KTR_IGMPV3, "%s: imr_interface = %s, ifp = %p",