File tree Expand file tree Collapse file tree 2 files changed +31
-4
lines changed Expand file tree Collapse file tree 2 files changed +31
-4
lines changed Original file line number Diff line number Diff line change @@ -87,10 +87,18 @@ def setup_encryption(args)
8787 # additional branches requiring server validation and peer certs, etc.
8888 # go here.
8989 when :start_tls
90- request = [ Net ::LDAP ::StartTlsOid . to_ber_contextspecific ( 0 ) ] . to_ber_appsequence ( Net ::LDAP ::PDU ::ExtendedRequest )
91- write ( request )
92- pdu = read
93- raise Net ::LDAP ::LdapError , "no start_tls result" if pdu . nil?
90+ message_id = next_msgid
91+ request = [
92+ Net ::LDAP ::StartTlsOid . to_ber_contextspecific ( 0 )
93+ ] . to_ber_appsequence ( Net ::LDAP ::PDU ::ExtendedRequest )
94+
95+ write ( request , nil , message_id )
96+ pdu = queued_read ( message_id )
97+
98+ if pdu . nil? || pdu . app_tag != Net ::LDAP ::PDU ::ExtendedResponse
99+ raise Net ::LDAP ::LdapError , "no start_tls result"
100+ end
101+
94102 if pdu . result_code . zero?
95103 @conn = self . class . wrap_with_ssl ( @conn )
96104 else
Original file line number Diff line number Diff line change @@ -191,6 +191,25 @@ def test_queued_read_delete
191191 assert result . success?
192192 assert_equal 2 , result . message_id
193193 end
194+
195+ def test_queued_read_setup_encryption_with_start_tls
196+ result1 = make_message ( 1 , app_tag : Net ::LDAP ::PDU ::SearchResult )
197+ result2 = make_message ( 2 , app_tag : Net ::LDAP ::PDU ::ExtendedResponse )
198+
199+ mock = flexmock ( "socket" )
200+ mock . should_receive ( :read_ber ) .
201+ and_return ( result1 ) .
202+ and_return ( result2 )
203+ mock . should_receive ( :write )
204+ conn = Net ::LDAP ::Connection . new ( :socket => mock )
205+ flexmock ( Net ::LDAP ::Connection ) . should_receive ( :wrap_with_ssl ) . with ( mock ) .
206+ and_return ( mock )
207+
208+ conn . next_msgid # simulates ongoing query
209+
210+ assert result = conn . setup_encryption ( method : :start_tls )
211+ assert_equal mock , result
212+ end
194213end
195214
196215class TestLDAPConnectionErrors < Test ::Unit ::TestCase
You can’t perform that action at this time.
0 commit comments