@@ -251,6 +251,12 @@ class LdapError < StandardError; end
251251 SearchScopes = [ SearchScope_BaseObject , SearchScope_SingleLevel ,
252252 SearchScope_WholeSubtree ]
253253
254+ DerefAliases_Never = 0
255+ DerefAliases_Search = 1
256+ DerefAliases_Find = 2
257+ DerefAliases_Always = 3
258+ DerefAliasesArray = [ DerefAliases_Never , DerefAliases_Search , DerefAliases_Find , DerefAliases_Always ]
259+
254260 primitive = { 2 => :null } # UnbindRequest body
255261 constructed = {
256262 0 => :array , # BindRequest
@@ -592,6 +598,8 @@ def open
592598 # Net::LDAP::SearchScope_WholeSubtree. Default is WholeSubtree.)
593599 # * :size (an integer indicating the maximum number of search entries to
594600 # return. Default is zero, which signifies no limit.)
601+ # * :deref (one of: Net::LDAP::DerefAliases_Never, Net::LDAP::DerefAliases_Search,
602+ # Net::LDAP::DerefAliases_Find, Net::LDAP::DerefAliases_Always. Default is Never.)
595603 #
596604 # #search queries the LDAP server and passes <i>each entry</i> to the
597605 # caller-supplied block, as an object of type Net::LDAP::Entry. If the
@@ -1397,6 +1405,11 @@ def search(args = {})
13971405 raise Net ::LDAP ::LdapError , "invalid search scope" unless Net ::LDAP ::SearchScopes . include? ( scope )
13981406
13991407 sort_control = encode_sort_controls ( args . fetch ( :sort_controls ) { false } )
1408+
1409+ deref = args [ :deref ] || Net ::LDAP ::DerefAliases_Never
1410+ raise Net ::LDAP ::LdapError . new ( "invalid alias dereferencing value" ) unless Net ::LDAP ::DerefAliasesArray . include? ( deref )
1411+
1412+
14001413 # An interesting value for the size limit would be close to A/D's
14011414 # built-in page limit of 1000 records, but openLDAP newer than version
14021415 # 2.2.0 chokes on anything bigger than 126. You get a silent error that
@@ -1436,7 +1449,7 @@ def search(args = {})
14361449 request = [
14371450 search_base . to_ber ,
14381451 scope . to_ber_enumerated ,
1439- 0 . to_ber_enumerated ,
1452+ deref . to_ber_enumerated ,
14401453 query_limit . to_ber , # size limit
14411454 0 . to_ber ,
14421455 attributes_only . to_ber ,
0 commit comments