From owner-freebsd-java@FreeBSD.ORG Fri Feb 1 18:00:07 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 87673D4A for ; Fri, 1 Feb 2013 18:00:07 +0000 (UTC) (envelope-from kurt@intricatesoftware.com) Received: from mail1.intricatesoftware.com (cl-245.bos-01.us.sixxs.net [IPv6:2001:4830:1100:f4::2]) by mx1.freebsd.org (Postfix) with ESMTP id 0944F69B for ; Fri, 1 Feb 2013 18:00:06 +0000 (UTC) Received: from localhost (relay@mail1.intricatesoftware.com [127.0.0.1]) by mail1.intricatesoftware.com (8.14.5/8.14.3) with ESMTP id r11HxqNh011173; Fri, 1 Feb 2013 12:59:53 -0500 (EST) From: Kurt Miller To: bsd-port-dev@openjdk.java.net Subject: Re: MulticastSocket problem on FreeBSD Date: Fri, 1 Feb 2013 12:59:52 -0500 User-Agent: KMail/1.9.10 References: <20130131192629.Horde.ZGX-g9D9tu8aDwt6XwEMuw5@avocado.salatschuessel.net> <510B378A.8090603@intricatesoftware.com> <20130201090319.Horde.UUrN0L_jSn_qp6MZj0-Wig1@avocado.salatschuessel.net> In-Reply-To: <20130201090319.Horde.UUrN0L_jSn_qp6MZj0-Wig1@avocado.salatschuessel.net> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_ZKADRynliH8KyFM" Message-Id: <201302011259.53214.kurt@intricatesoftware.com> X-SMTP-Vilter-Version: 1.3.6 X-SMTP-Vilter-Virus-Backend: clamd X-SMTP-Vilter-Status: clean X-SMTP-Vilter-clamd-Virus-Status: clean X-Spamd-Symbols: ALL_TRUSTED,BAYES_00,T_FRT_STOCK2 X-SMTP-Vilter-Spam-Backend: spamd X-Spam-Score: -2.9 X-Spam-Threshold: 5.0 X-Spam-Probability: -0.6 X-SMTP-Vilter-Unwanted-Backend: attachment X-SMTP-Vilter-attachment-Unwanted-Status: clean X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: java@freebsd.org, Oliver Lehmann 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 18:00:07 -0000 --Boundary-00=_ZKADRynliH8KyFM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Oliver, On Friday 01 February 2013 03:03:19 am Oliver Lehmann wrote: > 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) Right those parts are already there. > > Basically I just replaced the MACOSX check with __FreeBSD__ and > it works now: The last chunk of the diff is not needed for this problem and is incomplete. It is for the problem described here: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7144274 http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/99cc5c9ef200 I have not yet checked to see if we need this fix in addition to the problem you noted. However, if we do need it then we to change MACOSX to _ALLBSD_SOURCE in both PlainDatagramSocketImpl.c mcast_join_leave() and net_util_md.c setDefaultScopeID() I am attaching patches for both openjdk6 and openjdk7 that should fix the problem you initially reported and will apply to FreeBSD's ports cleanly. Thanks for reporting the problem and tracking the correction down. -Kurt > 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 ;) > >> > >> > > > --Boundary-00=_ZKADRynliH8KyFM--