summaryrefslogtreecommitdiff
path: root/kernel-8.0/freebsd-mcast-eaddrinuse.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kernel-8.0/freebsd-mcast-eaddrinuse.patch')
-rw-r--r--kernel-8.0/freebsd-mcast-eaddrinuse.patch22
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel-8.0/freebsd-mcast-eaddrinuse.patch b/kernel-8.0/freebsd-mcast-eaddrinuse.patch
new file mode 100644
index 0000000..b933672
--- /dev/null
+++ b/kernel-8.0/freebsd-mcast-eaddrinuse.patch
@@ -0,0 +1,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",