/**
   * Remove unwanted headers from the given header map.
   *
   * @param headers Header map
   * @param nHttpConfiguration NHttp transporter base configurations
   */
  private void removeUnwantedHeadersFromHeaderMap(
      Map headers, NHttpConfiguration nHttpConfiguration) {

    Iterator iter = headers.keySet().iterator();
    while (iter.hasNext()) {
      String headerName = (String) iter.next();
      if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName)
          || HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName)
          || HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName)
          || HTTP.CONTENT_LEN.equalsIgnoreCase(headerName)) {
        iter.remove();
      }

      if (HTTP.SERVER_HEADER.equalsIgnoreCase(headerName)
          && !nHttpConfiguration.isPreserveHttpHeader(HTTP.SERVER_HEADER)) {
        iter.remove();
      }

      if (HTTP.USER_AGENT.equalsIgnoreCase(headerName)
          && !nHttpConfiguration.isPreserveHttpHeader(HTTP.USER_AGENT)) {
        iter.remove();
      }

      if (HTTP.DATE_HEADER.equalsIgnoreCase(headerName)
          && !nHttpConfiguration.isPreserveHttpHeader(HTTP.DATE_HEADER)) {
        iter.remove();
      }
    }
  }