Author: fhanik
Date: Thu Jun 18 17:08:38 2009
New Revision: 786165

URL: http://svn.apache.org/viewvc?rev=786165&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47308
Patch provided by Keiichi Fujino with one change, default is false

Modified:
    tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java
    
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
    tomcat/trunk/webapps/docs/config/cluster-membership.xml

Modified: 
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java?rev=786165&r1=786164&r2=786165&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/tribes/membership/McastService.java 
Thu Jun 18 17:08:38 2009
@@ -245,6 +245,9 @@
         properties.setProperty("recoverySleepTime", 
String.valueOf(recoverySleepTime));
     }
 
+    public void setLocalLoopbackDisabled(boolean localLoopbackDisabled) {
+        
properties.setProperty("localLoopbackDisabled",String.valueOf(localLoopbackDisabled));
+    }
 
     /**
      * @deprecated use getPort()
@@ -383,7 +386,8 @@
                                     ttl,
                                     soTimeout,
                                     this,
-                                    this);
+                                    this,
+                                    
Boolean.valueOf(properties.getProperty("localLoopbackDisabled","false")).booleanValue());
         String value = properties.getProperty("recoveryEnabled","true");
         boolean recEnabled = Boolean.valueOf(value).booleanValue() ;
         impl.setRecoveryEnabled(recEnabled);

Modified: 
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java?rev=786165&r1=786164&r2=786165&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java 
(original)
+++ 
tomcat/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java 
Thu Jun 18 17:08:38 2009
@@ -148,6 +148,11 @@
     protected ExecutorService executor = new ThreadPoolExecutor(0, 2, 0L, 
TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
     
     /**
+     * disable/enable local loopback message
+     */
+    protected boolean localLoopbackDisabled = false;
+    
+    /**
      * Create a new mcast service impl
      * @param member - the local member
      * @param sendFrequency - the time (ms) in between pings sent out
@@ -156,6 +161,7 @@
      * @param bind - the bind address (not sure this is used yet)
      * @param mcastAddress - the mcast address
      * @param service - the callback service
+     * @param disableLoopbackMode - disable loopbackMode
      * @throws IOException
      */
     public McastServiceImpl(
@@ -168,7 +174,8 @@
         int ttl,
         int soTimeout,
         MembershipListener service,
-        MessageListener msgservice)
+        MessageListener msgservice,
+        boolean localLoopbackDisabled)
     throws IOException {
         this.member = member;
         this.address = mcastAddress;
@@ -180,6 +187,7 @@
         this.service = service;
         this.msgservice = msgservice;
         this.sendFrequency = sendFrequency;
+        this.localLoopbackDisabled = localLoopbackDisabled;
         init();
     }
 
@@ -213,7 +221,7 @@
         } else {
             socket = new MulticastSocket(port);
         }
-        socket.setLoopbackMode(true); //hint that we don't need loop back 
messages
+        socket.setLoopbackMode(localLoopbackDisabled); //hint if we want 
disable loop back(local machine) messages
         if (mcastBindAddress != null) {
                        if(log.isInfoEnabled())
                 log.info("Setting multihome multicast interface to:" 
+mcastBindAddress);

Modified: tomcat/trunk/webapps/docs/config/cluster-membership.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-membership.xml?rev=786165&r1=786164&r2=786165&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/cluster-membership.xml (original)
+++ tomcat/trunk/webapps/docs/config/cluster-membership.xml Thu Jun 18 17:08:38 
2009
@@ -147,6 +147,14 @@
       The default is <code>5000</code> (5 seconds). <br/>
       </p>
     </attribute>
+    
+    <attribute name="localLoopbackDisabled" required="false">
+      <p>
+      Membership uses multicast, it will call 
<code>java.net.MulticastSocket.setLoopbackMode(localLoopbackDisabled)</code>.
+      When <code>localLoopbackDisabled==true</code> multicast messages will 
not reach other nodes on the same local machine.
+      The default is <code>false</code>. <br/>
+      </p>
+    </attribute>
 
 
   </attributes>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to