@@ -251,6 +251,12 @@ class LdapError < StandardError; end
251
251
SearchScopes = [ SearchScope_BaseObject , SearchScope_SingleLevel ,
252
252
SearchScope_WholeSubtree ]
253
253
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
+
254
260
primitive = { 2 => :null } # UnbindRequest body
255
261
constructed = {
256
262
0 => :array , # BindRequest
@@ -592,6 +598,8 @@ def open
592
598
# Net::LDAP::SearchScope_WholeSubtree. Default is WholeSubtree.)
593
599
# * :size (an integer indicating the maximum number of search entries to
594
600
# 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.)
595
603
#
596
604
# #search queries the LDAP server and passes <i>each entry</i> to the
597
605
# caller-supplied block, as an object of type Net::LDAP::Entry. If the
@@ -1397,6 +1405,11 @@ def search(args = {})
1397
1405
raise Net ::LDAP ::LdapError , "invalid search scope" unless Net ::LDAP ::SearchScopes . include? ( scope )
1398
1406
1399
1407
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
+
1400
1413
# An interesting value for the size limit would be close to A/D's
1401
1414
# built-in page limit of 1000 records, but openLDAP newer than version
1402
1415
# 2.2.0 chokes on anything bigger than 126. You get a silent error that
@@ -1436,7 +1449,7 @@ def search(args = {})
1436
1449
request = [
1437
1450
search_base . to_ber ,
1438
1451
scope . to_ber_enumerated ,
1439
- 0 . to_ber_enumerated ,
1452
+ deref . to_ber_enumerated ,
1440
1453
query_limit . to_ber , # size limit
1441
1454
0 . to_ber ,
1442
1455
attributes_only . to_ber ,
0 commit comments