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

java.net.Socket checks for old-style impls

XMLWordPrintable

    • Icon: Backport Backport
    • Resolution: Fixed
    • Icon: P4 P4
    • 5.0u7
    • None
    • core-libs
    • b01

      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.
      *** (#1 of 1): 2004-08-27 22:42:02 PDT ###@###.###
      *** Last Edit: 2005-08-10 06:57:10 PDT ###@###.###

            tmoscovisunw Tal Moscovitz (Inactive)
            tmoscovisunw Tal Moscovitz (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: