# File lib/net/ldap.rb, line 617
  def search(args = {})
    unless args[:ignore_server_caps]
      args[:paged_searches_supported] = paged_searches_supported?
    end

    args[:base] ||= @base
    return_result_set = args[:return_result] != false
    result_set = return_result_set ? [] : nil

    if @open_connection
      @result = @open_connection.search(args) { |entry|
        result_set << entry if result_set
        yield entry if block_given?
      }
    else
      @result = 0
      begin
        conn = Net::LDAP::Connection.new(:host => @host, :port => @port,
                                         :encryption => @encryption)
        if (@result = conn.bind(args[:auth] || @auth)) == 0
          @result = conn.search(args) { |entry|
            result_set << entry if result_set
            yield entry if block_given?
          }
        end
      ensure
        conn.close if conn
      end
    end

    if return_result_set
      @result == 0 ? result_set : nil
    else
      @result == 0
    end
  end