@@ -89,9 +89,7 @@ def setup_encryption(args)
89
89
when :start_tls
90
90
request = [ Net ::LDAP ::StartTlsOid . to_ber_contextspecific ( 0 ) ] . to_ber_appsequence ( Net ::LDAP ::PDU ::ExtendedRequest )
91
91
write ( request )
92
- be = read
93
- raise Net ::LDAP ::LdapError , "no start_tls result" if be . nil?
94
- pdu = Net ::LDAP ::PDU . new ( be )
92
+ pdu = read
95
93
raise Net ::LDAP ::LdapError , "no start_tls result" if pdu . nil?
96
94
if pdu . result_code . zero?
97
95
@conn = self . class . wrap_with_ssl ( @conn )
@@ -117,13 +115,25 @@ def close
117
115
#
118
116
# - syntax: the BER syntax to use to parse the read data with
119
117
#
120
- # Returns basic BER objects .
118
+ # Returns parsed Net::LDAP::PDU object .
121
119
def read ( syntax = Net ::LDAP ::AsnSyntax )
122
- instrument "read.net_ldap_connection" , :syntax => syntax do |payload |
123
- @conn . read_ber ( syntax ) do |id , content_length |
124
- payload [ :object_type_id ] = id
125
- payload [ :content_length ] = content_length
120
+ ber_object =
121
+ instrument "read.net_ldap_connection" , :syntax => syntax do |payload |
122
+ @conn . read_ber ( syntax ) do |id , content_length |
123
+ payload [ :object_type_id ] = id
124
+ payload [ :content_length ] = content_length
125
+ end
126
126
end
127
+
128
+ return unless ber_object
129
+
130
+ instrument "parse_pdu.net_ldap_connection" do |payload |
131
+ pdu = payload [ :pdu ] = Net ::LDAP ::PDU . new ( ber_object )
132
+
133
+ payload [ :message_id ] = pdu . message_id
134
+ payload [ :app_tag ] = pdu . app_tag
135
+
136
+ pdu
127
137
end
128
138
end
129
139
private :read
@@ -181,7 +191,8 @@ def bind_simple(auth)
181
191
psw . to_ber_contextspecific ( 0 ) ] . to_ber_appsequence ( 0 )
182
192
write ( request )
183
193
184
- ( be = read and pdu = Net ::LDAP ::PDU . new ( be ) ) or raise Net ::LDAP ::LdapError , "no bind result"
194
+ pdu = read
195
+ raise Net ::LDAP ::LdapError , "no bind result" unless pdu
185
196
186
197
pdu
187
198
end
@@ -218,7 +229,9 @@ def bind_sasl(auth)
218
229
request = [ LdapVersion . to_ber , "" . to_ber , sasl ] . to_ber_appsequence ( 0 )
219
230
write ( request )
220
231
221
- ( be = read and pdu = Net ::LDAP ::PDU . new ( be ) ) or raise Net ::LDAP ::LdapError , "no bind result"
232
+ pdu = read
233
+ raise Net ::LDAP ::LdapError , "no bind result" unless pdu
234
+
222
235
return pdu unless pdu . result_code == 14 # saslBindInProgress
223
236
raise Net ::LDAP ::LdapError , "sasl-challenge overflow" if ( ( n += 1 ) > MaxSaslChallenges )
224
237
@@ -395,7 +408,7 @@ def search(args = {})
395
408
result_pdu = nil
396
409
controls = [ ]
397
410
398
- while ( be = read ) && ( pdu = Net :: LDAP :: PDU . new ( be ) )
411
+ while pdu = read
399
412
case pdu . app_tag
400
413
when Net ::LDAP ::PDU ::SearchReturnedData
401
414
n_results += 1
@@ -500,7 +513,11 @@ def modify(args)
500
513
ops . to_ber_sequence ] . to_ber_appsequence ( 6 )
501
514
write ( request )
502
515
503
- ( be = read ) && ( pdu = Net ::LDAP ::PDU . new ( be ) ) && ( pdu . app_tag == Net ::LDAP ::PDU ::ModifyResponse ) or raise Net ::LDAP ::LdapError , "response missing or invalid"
516
+ pdu = read
517
+
518
+ if !pdu || pdu . app_tag != Net ::LDAP ::PDU ::ModifyResponse
519
+ raise Net ::LDAP ::LdapError , "response missing or invalid"
520
+ end
504
521
505
522
pdu
506
523
end
@@ -522,10 +539,11 @@ def add(args)
522
539
request = [ add_dn . to_ber , add_attrs . to_ber_sequence ] . to_ber_appsequence ( 8 )
523
540
write ( request )
524
541
525
- ( be = read ) &&
526
- ( pdu = Net :: LDAP :: PDU . new ( be ) ) &&
527
- ( pdu . app_tag == Net ::LDAP ::PDU ::AddResponse ) or
542
+ pdu = read
543
+
544
+ if ! pdu || pdu . app_tag != Net ::LDAP ::PDU ::AddResponse
528
545
raise Net ::LDAP ::LdapError , "response missing or invalid"
546
+ end
529
547
530
548
pdu
531
549
end
@@ -544,9 +562,11 @@ def rename(args)
544
562
545
563
write ( request . to_ber_appsequence ( 12 ) )
546
564
547
- ( be = read ) &&
548
- ( pdu = Net ::LDAP ::PDU . new ( be ) ) && ( pdu . app_tag == Net ::LDAP ::PDU ::ModifyRDNResponse ) or
549
- raise Net ::LDAP ::LdapError . new ( "response missing or invalid" )
565
+ pdu = read
566
+
567
+ if !pdu || pdu . app_tag != Net ::LDAP ::PDU ::ModifyRDNResponse
568
+ raise Net ::LDAP ::LdapError . new "response missing or invalid"
569
+ end
550
570
551
571
pdu
552
572
end
@@ -560,7 +580,11 @@ def delete(args)
560
580
request = dn . to_s . to_ber_application_string ( 10 )
561
581
write ( request , controls )
562
582
563
- ( be = read ) && ( pdu = Net ::LDAP ::PDU . new ( be ) ) && ( pdu . app_tag == Net ::LDAP ::PDU ::DeleteResponse ) or raise Net ::LDAP ::LdapError , "response missing or invalid"
583
+ pdu = read
584
+
585
+ if !pdu || pdu . app_tag != Net ::LDAP ::PDU ::DeleteResponse
586
+ raise Net ::LDAP ::LdapError , "response missing or invalid"
587
+ end
564
588
565
589
pdu
566
590
end
0 commit comments