[mod_cluster-commits] mod_cluster SVN: r784 - trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Apr 4 10:01:42 EDT 2012
Author: jfrederic.clere at jboss.com
Date: 2012-04-04 10:01:42 -0400 (Wed, 04 Apr 2012)
New Revision: 784
Modified:
trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPHandler.java
trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPRequestFactory.java
Log:
Java part of MODCLUSTER-298
Modified: trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPHandler.java
===================================================================
--- trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPHandler.java 2012-04-04 14:00:15 UTC (rev 783)
+++ trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPHandler.java 2012-04-04 14:01:42 UTC (rev 784)
@@ -31,6 +31,7 @@
import java.io.OutputStreamWriter;
import java.io.Serializable;
import java.io.Writer;
+import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
@@ -810,7 +811,15 @@
private synchronized Socket getConnection() throws IOException {
if ((this.socket == null) || this.socket.isClosed()) {
this.socket = this.socketFactory.createSocket();
- this.socket.connect(this.socketAddress, this.socketTimeout);
+ InetAddress address = this.socketAddress.getAddress();
+ if ( address instanceof Inet6Address && ((Inet6Address)address).isLinkLocalAddress()) {
+ /* We need to work-around a java6 bug */
+ InetSocketAddress addr = new InetSocketAddress(address, 0);
+ this.socket.bind(addr);
+ this.socket.connect(this.socketAddress, this.socketTimeout);
+ } else {
+ this.socket.connect(this.socketAddress, this.socketTimeout);
+ }
this.socket.setSoTimeout(this.socketTimeout);
this.localAddress = this.socket.getLocalAddress();
}
Modified: trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPRequestFactory.java
===================================================================
--- trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPRequestFactory.java 2012-04-04 14:00:15 UTC (rev 783)
+++ trunk/core/src/main/java/org/jboss/modcluster/mcmp/impl/DefaultMCMPRequestFactory.java 2012-04-04 14:01:42 UTC (rev 784)
@@ -21,6 +21,8 @@
*/
package org.jboss.modcluster.mcmp.impl;
+import java.net.Inet6Address;
+
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
@@ -69,8 +71,21 @@
// so send host name portion, if it exists
String address = connector.getAddress().toString();
int index = address.indexOf("/");
+ if (connector.getAddress() instanceof Inet6Address) {
+ /* IPv6 address require a [] */
+ String saddr = null;
+ if (index > 0) {
+ saddr = address.substring(0, index); // Name.
+ } else {
+ saddr = "[";
+ saddr = saddr.concat(address.substring(1));
+ saddr = saddr.concat("]");
+ }
+ parameters.put("Host", saddr);
+ } else {
+ parameters.put("Host", (index > 0) ? address.substring(0, index) : address.substring(1));
+ }
- parameters.put("Host", (index > 0) ? address.substring(0, index) : address.substring(1));
parameters.put("Port", String.valueOf(connector.getPort()));
parameters.put("Type", connector.getType().toString());
More information about the mod_cluster-commits
mailing list