Skip to content

Commit 8a106ca

Browse files
committed
Added Continuation Reference Processing as defined in section 4.5.3 of RFC 2251 (http://www.ietf.org/rfc/rfc2251.txt)
1 parent a1bf790 commit 8a106ca

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

lib/net/ldap.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ class LdapError < StandardError; end
317317
2 => "Protocol Error",
318318
3 => "Time Limit Exceeded",
319319
4 => "Size Limit Exceeded",
320+
10 => "Referral",
320321
12 => "Unavailable crtical extension",
321322
14 => "saslBindInProgress",
322323
16 => "No Such Attribute",
@@ -1418,6 +1419,13 @@ def search(args = {})
14181419
when 5 # search-result
14191420
result_code = pdu.result_code
14201421
controls = pdu.result_controls
1422+
if return_referrals && result_code == 10
1423+
if block_given?
1424+
se = Net::LDAP::Entry.new
1425+
se[:search_referrals] = (pdu.search_referrals || [])
1426+
yield se
1427+
end
1428+
end
14211429
break
14221430
else
14231431
raise Net::LDAP::LdapError, "invalid response-type in search: #{pdu.app_tag}"

lib/net/ldap/pdu.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def parse_ldap_result(sequence)
136136
:matchedDN => sequence[1],
137137
:errorMessage => sequence[2]
138138
}
139+
parse_search_referral(sequence[3]) if @ldap_result[:resultCode] == 10
139140
end
140141
private :parse_ldap_result
141142

0 commit comments

Comments
 (0)