Skip to content

Commit e015dfb

Browse files
committed
Use queued_read for delete operation
1 parent 4132f28 commit e015dfb

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

lib/net/ldap/connection.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -655,11 +655,12 @@ def rename(args)
655655
#++
656656
def delete(args)
657657
dn = args[:dn] or raise "Unable to delete empty DN"
658-
controls = args.include?(:control_codes) ? args[:control_codes].to_ber_control : nil #use nil so we can compact later
659-
request = dn.to_s.to_ber_application_string(Net::LDAP::PDU::DeleteRequest)
660-
write(request, controls)
658+
controls = args.include?(:control_codes) ? args[:control_codes].to_ber_control : nil #use nil so we can compact later
659+
message_id = next_msgid
660+
request = dn.to_s.to_ber_application_string(Net::LDAP::PDU::DeleteRequest)
661661

662-
pdu = read
662+
write(request, controls, message_id)
663+
pdu = queued_read(message_id)
663664

664665
if !pdu || pdu.app_tag != Net::LDAP::PDU::DeleteResponse
665666
raise Net::LDAP::LdapError, "response missing or invalid"

test/test_ldap_connection.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,24 @@ def test_queued_read_rename
173173
assert result.success?
174174
assert_equal 2, result.message_id
175175
end
176+
177+
def test_queued_read_delete
178+
result1 = make_message(1, app_tag: Net::LDAP::PDU::SearchResult)
179+
result2 = make_message(2, app_tag: Net::LDAP::PDU::DeleteResponse)
180+
181+
mock = flexmock("socket")
182+
mock.should_receive(:read_ber).
183+
and_return(result1).
184+
and_return(result2)
185+
mock.should_receive(:write)
186+
conn = Net::LDAP::Connection.new(:socket => mock)
187+
188+
conn.next_msgid # simulates ongoing query
189+
190+
assert result = conn.delete(dn: "uid=deletable-user1,ou=People,dc=rubyldap,dc=com")
191+
assert result.success?
192+
assert_equal 2, result.message_id
193+
end
176194
end
177195

178196
class TestLDAPConnectionErrors < Test::Unit::TestCase

0 commit comments

Comments
 (0)