Github user anmolnar commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/648#discussion_r221368841
  
    --- Diff: src/java/main/org/apache/zookeeper/ClientCnxn.java ---
    @@ -990,6 +992,27 @@ private void sendPing() {
             private boolean saslLoginFailed = false;
     
             private void startConnect(InetSocketAddress addr) throws 
IOException {
    +            boolean canonicalize = true;
    +            try {
    +                canonicalize = 
Boolean.parseBoolean(System.getProperty(ZK_SASL_CLIENT_CANONICALIZE_HOSTNAME, 
"true"));
    +            } catch (IllegalArgumentException ea) {
    +                //ignored ...
    +            }
    +
    +            if (canonicalize) {
    +                try {
    +                    InetAddress ia = addr.getAddress();
    +                    LOG.warn("ia {}", ia);
    +                    if (ia == null) {
    +                        ia = InetAddress.getByName(addr.getHostName());
    +                    }
    +                    String host = (ia != null) ? ia.getCanonicalHostName() 
: addr.getHostName();
    +                    addr = new 
InetSocketAddress(InetAddress.getByAddress(host, ia.getAddress()), 
addr.getPort());
    --- End diff --
    
    I'm thinking of how much value does it have to replace the address with the 
canonicalized version for the entire client. We might want to implement this 
strictly and only for `ZooKeeperSaslClient`.
    
    I'd rather move this logic to the creation of `ZooKeeperSaslClient`. 
    
    Something like:
    ```java
    zooKeeperSaslClient =  new ZooKeeperSaslClient(principalUserName + "/" + 
canonicalize ? addr.getAddress().getCanonicalHostName() : addr.getHostName());
    ```


---

Reply via email to