private Socket createSocket(ConnectivitySettings cs, InetSocketAddress address, int timeout)
      throws IOException {
    switch (cs.getConnectionType()) {
      case ConnectivitySettings.CONNECTION_VIA_SOCKS:
      case ConnectivitySettings.CONNECTION_DIRECT:
        Socket s = new Socket();
        s.connect(address, timeout);
        return s;

      case ConnectivitySettings.CONNECTION_VIA_HTTPS:
        return getHttpsTunnelSocket(address, cs, timeout);

      default:
        throw new IllegalArgumentException("Illegal connection type: " + cs.getConnectionType());
    }
  }