Date: Mon, 27 Sep 2010 16:01:57 +0800 From: =?GB2312?B?u8bOxLvU?= <huanghwh@gmail.com> To: freebsd-java@freebsd.org Subject: Re: SCTP not work under openjdk7? Message-ID: <AANLkTin7vnaQiEEnW895hUZp==pL9zfmbxkaHw5gei0A@mail.gmail.com> In-Reply-To: <AANLkTimF3Vtw_P1Yw8WDtAtoRzOO2XxPpAK7YNB7etzV@mail.gmail.com> References: <AANLkTimF3Vtw_P1Yw8WDtAtoRzOO2XxPpAK7YNB7etzV@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
2010/9/26 =BB=C6=CE=C4=BB=D4 <huanghwh@gmail.com> > hi, > I try to use SCTP under FreeBSD8.1+openjdk7, It seems not work. > I use sample code from http://blogs.sun.com/chegar/entry/sctp_in_java: > > %/usr/local/openjdk7/bin/java -version > openjdk version "1.7.0" > OpenJDK Runtime Environment (build 1.7.0-root_2010_07_12_16_38-b00) > OpenJDK 64-Bit Server VM (build 19.0-b03, mixed mode) > > %/usr/local/openjdk7/bin/java DaytimeServer > Exception in thread "main" java.lang.AssertionError: Unknown event type > at sun.nio.ch.SctpPeerAddrChange.<init>(SctpPeerAddrChange.java:75) > at sun.nio.ch.SctpChannelImpl.receive0(Native Method) > at > sun.nio.ch.SctpChannelImpl.receiveIntoNativeBuffer(SctpChannelImpl.java:8= 49) > at sun.nio.ch.SctpChannelImpl.receive(SctpChannelImpl.java:825) > at sun.nio.ch.SctpChannelImpl.receive(SctpChannelImpl.java:768) > at sun.nio.ch.SctpChannelImpl.<init>(SctpChannelImpl.java:163) > at sun.nio.ch.SctpChannelImpl.<init>(SctpChannelImpl.java:141) > at > sun.nio.ch.SctpServerChannelImpl.accept(SctpServerChannelImpl.java:241) > at DaytimeServer.main(DaytimeServer.java:35) > > > %/usr/local/openjdk7/bin/java DaytimeClient > New association setup with 10 outbound streams, and 10 inbound streams. > Exception in thread "main" java.net.SocketException: Connection reset by > peer > at sun.nio.ch.SctpChannelImpl.receive0(Native Method) > at > sun.nio.ch.SctpChannelImpl.receiveIntoNativeBuffer(SctpChannelImpl.java:8= 49) > at sun.nio.ch.SctpChannelImpl.receive(SctpChannelImpl.java:825) > at sun.nio.ch.SctpChannelImpl.receive(SctpChannelImpl.java:768) > at sun.nio.ch.SctpChannelImpl.receive(SctpChannelImpl.java:730) > at DaytimeClient.main(DaytimeClient.java:35) > > > anyone have this problem? > > --hwh > > > This patch make sctp works, and pass most of test case in "jdk/test/com/sun/nio/sctp" tp# diff -u SctpChannelImpl.c.orig SctpChannelImpl.c --- SctpChannelImpl.c.orig 2010-09-26 20:05:25.978142798 +0800 +++ SctpChannelImpl.c 2010-09-27 15:29:01.524449940 +0800 @@ -548,8 +548,11 @@ /* Set up the msghdr structure for sending */ memset(msg, 0, sizeof (*msg)); memset(cbuf, 0, cbuf_size); - msg->msg_name =3D &sa; - msg->msg_namelen =3D sa_len; + /* FreeBSD have to make msg->msg_name =3D NULL */ + if(sa_len !=3D 0){ + msg->msg_name =3D &sa; + msg->msg_namelen =3D sa_len; + } iov->iov_base =3D addr; iov->iov_len =3D length; msg->msg_iov =3D iov; diff -u SctpNet.c.orig SctpNet.c --- SctpNet.c.orig 2010-09-26 20:05:13.455803096 +0800 +++ SctpNet.c 2010-09-27 15:23:12.176899650 +0800 @@ -191,7 +191,9 @@ memset(&event, 0, sizeof(event)); event.sctp_data_io_event =3D 1; event.sctp_association_event =3D 1; - event.sctp_address_event =3D 1; + /* In oneToOne case, do not subscription sctp_address_event. */ + if(!oneToOne) + event.sctp_address_event =3D 1; event.sctp_send_failure_event =3D 1; //event.sctp_peer_error_event =3D 1; event.sctp_shutdown_event =3D 1;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTin7vnaQiEEnW895hUZp==pL9zfmbxkaHw5gei0A>