test/jdk/com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java
changeset 59205 afcc8af048e6
parent 47216 71c04702a3d5
--- a/test/jdk/com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java	Thu Nov 21 12:14:28 2019 +0000
+++ b/test/jdk/com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java	Thu Nov 21 12:14:29 2019 +0000
@@ -154,7 +154,6 @@
 
     /* SCTP_PRIMARY_ADDR */
     void sctpPrimaryAddr() throws IOException {
-        SocketAddress addrToSet = null;
         ByteBuffer buffer = ByteBuffer.allocate(Util.SMALL_BUFFER);
 
         System.out.println("TESTING SCTP_PRIMARY_ADDR");
@@ -189,12 +188,11 @@
 
         SctpChannel peerChannel = ssc.accept();
         ssc.close();
-        Set<SocketAddress> peerAddrs = peerChannel.getAllLocalAddresses();
-        debug("Peer local Addresses: ");
-        for (Iterator<SocketAddress> it = peerAddrs.iterator(); it.hasNext(); ) {
+        Set<SocketAddress> remoteAddresses = smc.getRemoteAddresses(assoc);
+        debug("Remote Addresses: ");
+        for (Iterator<SocketAddress> it = remoteAddresses.iterator(); it.hasNext(); ) {
             InetSocketAddress addr = (InetSocketAddress)it.next();
             debug("\t" + addr);
-            addrToSet = addr;   // any of the peer addresses will do!
         }
 
         /* retrieval of SCTP_PRIMARY_ADDR is not supported on Solaris */
@@ -207,25 +205,21 @@
         } else { /* Linux */
             SocketAddress primaryAddr = smc.getOption(SCTP_PRIMARY_ADDR, assoc);
             System.out.println("SCTP_PRIMARY_ADDR returned: " + primaryAddr);
-            /* Verify that this is one of the peer addresses */
-            boolean found = false;
-            addrToSet = primaryAddr; // may not have more than one addr
-            for (Iterator<SocketAddress> it = peerAddrs.iterator(); it.hasNext(); ) {
-                InetSocketAddress addr = (InetSocketAddress)it.next();
-                if (addr.equals(primaryAddr)) {
-                    found = true;
-                }
-                addrToSet = addr;
+            /* Verify that this is one of the remote addresses */
+            check(remoteAddresses.contains(primaryAddr), "SCTP_PRIMARY_ADDR returned bogus address!");
+
+            for (Iterator<SocketAddress> it = remoteAddresses.iterator(); it.hasNext(); ) {
+                InetSocketAddress addrToSet = (InetSocketAddress) it.next();
+                System.out.println("SCTP_PRIMARY_ADDR try set to: " + addrToSet);
+                smc.setOption(SCTP_PRIMARY_ADDR, addrToSet, assoc);
+                System.out.println("SCTP_PRIMARY_ADDR set to    : " + addrToSet);
+                primaryAddr = smc.getOption(SCTP_PRIMARY_ADDR, assoc);
+                System.out.println("SCTP_PRIMARY_ADDR returned  : " + primaryAddr);
+                check(addrToSet.equals(primaryAddr), "SCTP_PRIMARY_ADDR not set correctly");
             }
-            check(found, "SCTP_PRIMARY_ADDR returned bogus address!");
-
-            System.out.println("Try SCTP_PRIMARY_ADDR set to: " + addrToSet);
-            smc.setOption(SCTP_PRIMARY_ADDR, addrToSet, assoc);
-            System.out.println("SCTP_PRIMARY_ADDR set to: " + addrToSet);
-            primaryAddr = smc.getOption(SCTP_PRIMARY_ADDR, assoc);
-            System.out.println("SCTP_PRIMARY_ADDR returned: " + primaryAddr);
-            check(addrToSet.equals(primaryAddr),"SCTP_PRIMARY_ADDR not set correctly");
         }
+        smc.close();
+        peerChannel.close();
     }
 
     class SOTNotificationHandler extends AbstractNotificationHandler<Object>