Author: rjung Date: Tue Mar 17 18:56:56 2009 New Revision: 755351 URL: http://svn.apache.org/viewvc?rev=755351&view=rev Log: Two backports from trunk: - Fix not wanting to receive node local heartbeat on multicast socket. - BZ 43641: Fix setting multicast bind address on multihomed computers.
Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastServiceImpl.java Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml?rev=755351&r1=755350&r2=755351&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml (original) +++ tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml Tue Mar 17 18:56:56 2009 @@ -33,6 +33,12 @@ <subsection name="Cluster"> <changelog> <fix> + Fix not wanting to receive node local heartbeat on multicast socket. (rjung) + </fix> + <fix> + <bug>43641</bug>: Fix setting multicast bind address on multihomed computers. (rjung) + </fix> + <fix> Fix small memory leak in FarmWarDeployer. Backport from Tomcat 6.0. (rjung) </fix> <fix> Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java?rev=755351&r1=755350&r2=755351&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/mcast/McastServiceImpl.java Tue Mar 17 18:56:56 2009 @@ -166,10 +166,23 @@ } protected void setupSocket() throws IOException { - if (mcastBindAddress != null) socket = new MulticastSocket(new java.net. - InetSocketAddress(mcastBindAddress, port)); - else socket = new MulticastSocket(port); - socket.setLoopbackMode(false); //hint that we don't need loop back messages + if (mcastBindAddress != null) { + try { + log.info("Attempting to bind the multicast socket to "+address+":"+port); + socket = new MulticastSocket(new InetSocketAddress(address,port)); + } catch (BindException e) { + /* + * On some plattforms (e.g. Linux) it is not possible to bind + * to the multicast address. In this case only bind to the + * port. + */ + log.info("Binding to multicast address, failed. Binding to port only."); + socket = new MulticastSocket(port); + } + } else { + socket = new MulticastSocket(port); + } + socket.setLoopbackMode(true); //hint that we don't need loop back messages if (mcastBindAddress != null) { if(log.isInfoEnabled()) log.info("Setting multihome multicast interface to:" + Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastServiceImpl.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastServiceImpl.java?rev=755351&r1=755350&r2=755351&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastServiceImpl.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/membership/McastServiceImpl.java Tue Mar 17 18:56:56 2009 @@ -178,10 +178,23 @@ } protected void setupSocket() throws IOException { - if (mcastBindAddress != null) socket = new MulticastSocket(new java.net. - InetSocketAddress(mcastBindAddress, port)); - else socket = new MulticastSocket(port); - socket.setLoopbackMode(false); //hint that we don't need loop back messages + if (mcastBindAddress != null) { + try { + log.info("Attempting to bind the multicast socket to "+address+":"+port); + socket = new MulticastSocket(new InetSocketAddress(address,port)); + } catch (BindException e) { + /* + * On some plattforms (e.g. Linux) it is not possible to bind + * to the multicast address. In this case only bind to the + * port. + */ + log.info("Binding to multicast address, failed. Binding to port only."); + socket = new MulticastSocket(port); + } + } else { + socket = new MulticastSocket(port); + } + socket.setLoopbackMode(true); //hint that we don't need loop back messages if (mcastBindAddress != null) { if(log.isInfoEnabled()) log.info("Setting multihome multicast interface to:" + --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org