diff options
Diffstat (limited to 'kernel-8.0/freebsd-mcast-eaddrinuse.patch')
-rw-r--r-- | kernel-8.0/freebsd-mcast-eaddrinuse.patch | 22 |
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", |