Only add the paging control if the server supports it. This is partly to work around a bug where a server will not allow all users to page, and will return insufficient access instead of ignoring the control.

This commit is contained in:
Jamstah 2011-01-05 14:07:36 +00:00
parent 74e994eed1
commit 756529b3ae

View file

@ -1386,14 +1386,15 @@ class Net::LDAP::Connection #:nodoc:
search_attributes.to_ber_sequence search_attributes.to_ber_sequence
].to_ber_appsequence(3) ].to_ber_appsequence(3)
controls = [ controls = []
controls <<
[ [
Net::LDAP::LdapControls::PagedResults.to_ber, Net::LDAP::LdapControls::PagedResults.to_ber,
# Criticality MUST be false to interoperate with normal LDAPs. # Criticality MUST be false to interoperate with normal LDAPs.
false.to_ber, false.to_ber,
rfc2696_cookie.map{ |v| v.to_ber}.to_ber_sequence.to_s.to_ber rfc2696_cookie.map{ |v| v.to_ber}.to_ber_sequence.to_s.to_ber
].to_ber_sequence ].to_ber_sequence if paged_searches_supported
].to_ber_contextspecific(0) controls = controls.to_ber_contextspecific(0)
pkt = [next_msgid.to_ber, request, controls].to_ber_sequence pkt = [next_msgid.to_ber, request, controls].to_ber_sequence
@conn.write pkt @conn.write pkt