java.net.Socket checks for old-style impls

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P4
    • 6
    • Affects Version/s: 6
    • Component/s: 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.

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

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: