Socks5LogicHandler.encodeProxyRequestPacket(final SocksProxyRequest request) 
should check that the result of request.getEndpointAddress() is resolved before 
using it 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: DIRMINA-652
                 URL: https://issues.apache.org/jira/browse/DIRMINA-652
             Project: MINA
          Issue Type: Bug
    Affects Versions: 2.0.0-RC1
            Reporter: Dan Mihai Dumitriu


Depending on what is going on in layers above this one, the InetSocketAddress 
returned by request.getEndpointAddress() could be unresolved, in which case the 
hostname should be used.

private IoBuffer encodeProxyRequestPacket(final SocksProxyRequest request)
            throws UnsupportedEncodingException {
        int len = 6;
        byte[] host = request.getHost() != null ? request.getHost().getBytes(
                "ASCII") : null;

        InetSocketAddress adr = request.getEndpointAddress();
        byte addressType = 0;

        if (adr != null && !adr.isUnresolved()) {
            if (adr.getAddress() instanceof Inet6Address) {
                len += 16;
                addressType = SocksProxyConstants.IPV6_ADDRESS_TYPE;
            } else if (adr.getAddress() instanceof Inet4Address) {
                len += 4;
                addressType = SocksProxyConstants.IPV4_ADDRESS_TYPE;
            }
        } else {
            len += 1 + host.length;
            addressType = SocksProxyConstants.DOMAIN_NAME_ADDRESS_TYPE;
        }

        IoBuffer buf = IoBuffer.allocate(len);

        buf.put(request.getProtocolVersion());
        buf.put(request.getCommandCode());
        buf.put((byte) 0x00); // Reserved
        buf.put(addressType);

        if (addressType == SocksProxyConstants.DOMAIN_NAME_ADDRESS_TYPE) {
            buf.put((byte) host.length);
            buf.put(host);
        } else {
            buf.put(request.getIpAddress());
        }

        buf.put(request.getPort());

        return buf;
    }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to