Hi Oliver, On 01/31/13 13:26, Oliver Lehmann wrote: > Hi, > > I encountered a bug while migrating from FreeBSDs old "Diablo jre" > to openjdk-jre version 6. > > I'm running a software using multicast communication and it fails > on FreeBSD when using openjdk6. > > example code: > > import java.io.IOException; > import java.net.InetAddress; > import java.net.MulticastSocket; > import java.net.SocketException; > import java.net.UnknownHostException; > > > class Main { > static String hostname = new String("10.0.1.1"); > > public static void main(String args[]) throws > SocketException, UnknownHostException, IOException{ > InetAddress ia = InetAddress.getByName(hostname); > MulticastSocket ssdpSocket = new MulticastSocket(); > > ssdpSocket.setInterface(ia); > > System.out.println("network interface: " + > ssdpSocket.getNetworkInterface()); > System.out.println("interface: " + ssdpSocket.getInterface()); > } > } > > > The output of the old "Diablo JRE" is: > > network interface: name:null index: -1 addresses: > /10.0.1.1; > > interface: /10.0.1.1 > > > The output of openJDK6 is: > > network interface: name:null > interface: /0.0.0.0 > > It always returns this information. > For comparison - openjdk on Linux: > > network interface: name:eth0 (eth0) > interface: /10.0.1.54 > > Oracle 7 VM on Windows: > > network interface: name:eth3 (Realtek PCIe GBE Family Controller) > interface: /10.0.1.51
I can confirm this is a problem for bsd-port (openjdk7) on OpenBSD too. > For me this seems to be an implementation bug of... I don't know? > PlainDatagramSocketImpl.c maybe? > > I tried to debug this further, but did not succeeded to find out if > either setInterface() failed to set it correctly, or somewhere in > getInterface() an early return() happens. I tried to remotly debug > this using Eclipse, but only saw the private variables of ssdpSocket > which didn't indicated something obvious. Breakpoints inside > java.net.MulticastSocket would have helped ;) > >