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

java.net.Socket checks for old-style impls

XMLWordPrintable

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

        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.

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

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: