Skip to content

Commit 8f4745d

Browse files
committed
Pull queued messages first, queue messages unless ID matches
1 parent 70cb1f9 commit 8f4745d

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

lib/net/ldap/connection.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,10 @@ def search(args = {})
356356
result_pdu = nil
357357
n_results = 0
358358

359+
@queue ||= {}
360+
message_id = next_msgid
361+
@queue[message_id] ||= []
362+
359363
instrument "search.net_ldap_connection",
360364
:filter => search_filter,
361365
:base => search_base,
@@ -403,12 +407,17 @@ def search(args = {})
403407
controls << sort_control if sort_control
404408
controls = controls.empty? ? nil : controls.to_ber_contextspecific(0)
405409

406-
write(request, controls)
410+
write(request, controls, message_id)
407411

408412
result_pdu = nil
409413
controls = []
410414

411-
while pdu = read
415+
while pdu = (@queue[message_id].shift || read)
416+
if pdu.message_id != message_id
417+
@queue[pdu.message_id].push pdu
418+
next
419+
end
420+
412421
case pdu.app_tag
413422
when Net::LDAP::PDU::SearchReturnedData
414423
n_results += 1

0 commit comments

Comments
 (0)