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
begin
conn = Net::LDAP::Connection.new(:host => @host, :port => @port,
:encryption => @encryption)
if (@result = conn.bind(args[:auth] || @auth)).result_code == 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.nil? && @result.result_code == 0) ? result_set : nil
else
@result.success?
end
end