From owner-freebsd-java@FreeBSD.ORG Fri Feb 1 08:03:22 2013 Return-Path: Delivered-To: java@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3D56CDDB for ; Fri, 1 Feb 2013 08:03:22 +0000 (UTC) (envelope-from lehmann@ans-netz.de) Received: from avocado.salatschuessel.net (avocado.salatschuessel.net [78.111.72.186]) by mx1.freebsd.org (Postfix) with ESMTP id 8369E1D1 for ; Fri, 1 Feb 2013 08:03:21 +0000 (UTC) Received: (qmail 75080 invoked by uid 80); 1 Feb 2013 08:03:19 -0000 Received: from dsdf-4db53ced.pool.mediaWays.net (dsdf-4db53ced.pool.mediaWays.net [77.181.60.237]) by avocado.salatschuessel.net (Horde Framework) with HTTP; Fri, 01 Feb 2013 09:03:19 +0100 Date: Fri, 01 Feb 2013 09:03:19 +0100 Message-ID: <20130201090319.Horde.UUrN0L_jSn_qp6MZj0-Wig1@avocado.salatschuessel.net> From: Oliver Lehmann To: bsd-port-dev@openjdk.java.net Subject: Re: MulticastSocket problem on FreeBSD References: <20130131192629.Horde.ZGX-g9D9tu8aDwt6XwEMuw5@avocado.salatschuessel.net> <510B378A.8090603@intricatesoftware.com> In-Reply-To: <510B378A.8090603@intricatesoftware.com> User-Agent: Internet Messaging Program (IMP) H5 (6.0.3) Content-Type: multipart/mixed; boundary="=_k3vvjMO63ViirVJmerBAzg1" MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: java@freebsd.org, Kurt Miller X-BeenThere: freebsd-java@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting Java to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Feb 2013 08:03:22 -0000 This message is in MIME format. --=_k3vvjMO63ViirVJmerBAzg1 Content-Type: text/plain; charset=UTF-8; format=flowed; DelSp=Yes Content-Disposition: inline Hi, I patched openjdk7. Attached you'll find the patch. It is now possible (at least for me) to use MulticastSocket. I know the patch is not ready for checkin, but I guess you'll get the idea and know how to do it properly as I don't know the correct defines to check. (The first two chunks in the patch are probably already in HG as the patch is based on u6 code) Basically I just replaced the MACOSX check with __FreeBSD__ and it works now: root@bigoli test> /usr/local/bootstrap-openjdk/bin/javac test.java root@bigoli test> /usr/local/bootstrap-openjdk/bin/jar -cf test.jar Main.class root@bigoli test> /usr/local/openjdk7/bin/java -classpath .:test.jar Main network interface: name:null interface: /10.0.1.1 Java is still not able to detect my network interface name, but this was also not working in Diablo JRE and I don't need it. At least I'm now getting the correct Multicast Address back (10.0.1.1 and not 0.0.0.0) Please consider fixing this upstream. PS: Sorry for top-post but I'm CCing FreeBSDs java@ list Kurt Miller wrote: > 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 ;) >> >> --=_k3vvjMO63ViirVJmerBAzg1--