]> err.no Git - linux-2.6/blobdiff - net/ipv6/ipv6_sockglue.c
Auto merge with /home/aegl/GIT/ia64-test
[linux-2.6] / net / ipv6 / ipv6_sockglue.c
index 279ab86be662000d7a4fbc04aac630a5af15e5a7..f3ef4c38d315fbdff7786fd04b03d435cff9270c 100644 (file)
@@ -423,11 +423,12 @@ done:
                        psin6 = (struct sockaddr_in6 *)&greqs.gsr_group;
                        retv = ipv6_sock_mc_join(sk, greqs.gsr_interface,
                                &psin6->sin6_addr);
-                       if (retv)
+                       /* prior join w/ different source is ok */
+                       if (retv && retv != -EADDRINUSE)
                                break;
                        omode = MCAST_INCLUDE;
                        add = 1;
-               } else /*IP_DROP_SOURCE_MEMBERSHIP */ {
+               } else /* MCAST_LEAVE_SOURCE_GROUP */ {
                        omode = MCAST_INCLUDE;
                        add = 0;
                }