Skip site navigation (1)Skip section navigation (2)
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>