lib/net/ldap/connection.rb in net-ldap-0.18.0 vs lib/net/ldap/connection.rb in net-ldap-0.19.0
- old
+ new
@@ -28,14 +28,13 @@
def socket_class=(socket_class)
@socket_class = socket_class
end
- def prepare_socket(server, timeout=nil)
+ def prepare_socket(server, timeout=nil, hostname='127.0.0.1')
socket = server[:socket]
encryption = server[:encryption]
- hostname = server[:host]
@conn = socket
setup_encryption(encryption, timeout, hostname) if encryption
end
@@ -49,11 +48,11 @@
}
errors = []
hosts.each do |host, port|
begin
- prepare_socket(server.merge(socket: @socket_class.new(host, port, socket_opts)), timeout)
+ prepare_socket(server.merge(socket: @socket_class.new(host, port, socket_opts)), timeout, host)
if encryption
if encryption[:tls_options] &&
encryption[:tls_options][:verify_mode] &&
encryption[:tls_options][:verify_mode] == OpenSSL::SSL::VERIFY_NONE
warn "not verifying SSL hostname of LDAPS server '#{host}:#{port}'"
@@ -423,19 +422,25 @@
# rfc2696_cookie sometimes contains binary data from Microsoft Active Directory
# this breaks when calling to_ber. (Can't force binary data to UTF-8)
# we have to disable paging (even though server supports it) to get around this...
+ user_controls = args.fetch(:controls, [])
controls = []
controls <<
[
Net::LDAP::LDAPControls::PAGED_RESULTS.to_ber,
# Criticality MUST be false to interoperate with normal LDAPs.
false.to_ber,
rfc2696_cookie.map(&:to_ber).to_ber_sequence.to_s.to_ber,
].to_ber_sequence if paged
controls << ber_sort if ber_sort
- controls = controls.empty? ? nil : controls.to_ber_contextspecific(0)
+ if controls.empty? && user_controls.empty?
+ controls = nil
+ else
+ controls += user_controls
+ controls = controls.to_ber_contextspecific(0)
+ end
write(request, controls, message_id)
result_pdu = nil
controls = []