Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 01 Feb 2013 09:03:19 +0100
From:      Oliver Lehmann <lehmann@ans-netz.de>
To:        bsd-port-dev@openjdk.java.net
Cc:        java@freebsd.org, Kurt Miller <kurt@intricatesoftware.com>
Subject:   Re: MulticastSocket problem on FreeBSD
Message-ID:  <20130201090319.Horde.UUrN0L_jSn_qp6MZj0-Wig1@avocado.salatschuessel.net>
In-Reply-To: <510B378A.8090603@intricatesoftware.com>
References:  <20130131192629.Horde.ZGX-g9D9tu8aDwt6XwEMuw5@avocado.salatschuessel.net> <510B378A.8090603@intricatesoftware.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <kurt@intricatesoftware.com> 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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130201090319.Horde.UUrN0L_jSn_qp6MZj0-Wig1>