Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-5089488

java.net.Socket checks for old-style impls

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P4
    • 6
    • 6
    • core-libs
    • None
    • beta
    • generic
    • solaris_9

    Backports

      Description

        We note that BugID: 4674826 is fixed in 142 release.

        However, java.net.Socket checks for old-style impls like this:

            private void checkOldImpl() {
            if (impl == null)
                return;
            // SocketImpl.connect() is a protected method, therefore we need to use
            // getDeclaredMethod, therefore we need permission to access the member
            try {
                AccessController.doPrivileged(new PrivilegedExceptionAction() {
                    public Object run() throws NoSuchMethodException {
                    Class[] cl = new Class[2];
                    cl[0] = SocketAddress.class;
                    cl[1] = Integer.TYPE;
                    impl.getClass().getDeclaredMethod("connect", cl);
                    return null;
                    }
                });
            } catch (java.security.PrivilegedActionException e) {
                oldImpl = true;
            }
            }

        However, my understanding is that this will exclude inherited methods on the impl. In our instance we have a BSocketImpl that inherits from ASocketImpl where only ASocketImpl has the appropriate connect() method. java.net.Socket therefor wrongly assumes that it is an old-style impl.

        Attachments

          Issue Links

            Activity

              People

                michaelm Michael McMahon
                cprasadsunw Ck Prasad (Inactive)
                Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: