From af27b55d89d2b3dfe2a8eaf7909d68e7ddd6c705 Mon Sep 17 00:00:00 2001 From: blackhedd Date: Sat, 30 Sep 2006 12:12:52 +0000 Subject: [PATCH] Factored out BindResponse handling, to support SASL server creds. --- lib/net/ldap/pdu.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/net/ldap/pdu.rb b/lib/net/ldap/pdu.rb index 829d7e8..4372727 100644 --- a/lib/net/ldap/pdu.rb +++ b/lib/net/ldap/pdu.rb @@ -82,7 +82,7 @@ class LdapPdu case @app_tag when BindResult - parse_ldap_result ber_object[1] + parse_bind_response ber_object[1] when SearchReturnedData parse_search_return ber_object[1] when SearchResultReferral @@ -129,6 +129,18 @@ class LdapPdu end private :parse_ldap_result + # + # parse_bind_response + # A Bind Response may have an additional field, ID [7], serverSaslCreds, per RFC 2251 pgh 4.2.3. + # + def parse_bind_response sequence + sequence.length >= 3 or raise LdapPduError + @ldap_result = {:resultCode => sequence[0], :matchedDN => sequence[1], :errorMessage => sequence[2]} + @ldap_result[:serverSaslCreds] = sequence[3] if sequence.length >= 4 + @ldap_result + end + private :parse_bind_response + # # parse_search_return # Definition from RFC 1777 (we're handling application-4 here)