Ensure connections are closed. Patch by Kristian Meier.

This commit is contained in:
emiel 2009-02-27 15:44:04 +00:00
parent afe6567a90
commit d6e6a97086
2 changed files with 56 additions and 34 deletions

View file

@ -1,4 +1,4 @@
=== Net::LDAP 0.0.5 / 2008-11-xx === Net::LDAP 0.0.5 / 2009-03-xx
* 13 minor enhancements: * 13 minor enhancements:
* Added Net::LDAP::Entry#to_ldif * Added Net::LDAP::Entry#to_ldif
@ -22,7 +22,7 @@
and marshalling. and marshalling.
* Migrated to 'hoe' as the new project droid. * Migrated to 'hoe' as the new project droid.
* 13 bugs fixed: * 14 bugs fixed:
* Silenced some annoying warnings in filter.rb. Thanks to "barjunk" * Silenced some annoying warnings in filter.rb. Thanks to "barjunk"
for pointing this out. for pointing this out.
* Some fairly extensive performance optimizations in the BER parser. * Some fairly extensive performance optimizations in the BER parser.
@ -43,7 +43,8 @@
* Allowed comma in filter strings, suggested by Kouhei. * Allowed comma in filter strings, suggested by Kouhei.
* 04Sep07, Changed four error classes to inherit from StandardError rather * 04Sep07, Changed four error classes to inherit from StandardError rather
Exception, in order to be friendlier to irb. Suggested by Kouhei. Exception, in order to be friendlier to irb. Suggested by Kouhei.
* Minor bug fixes here and there * Ensure connections are closed. Thanks to Kristian Meier.
* Minor bug fixes here and there.
=== Net::LDAP 0.0.4 / 2006-08-15 === Net::LDAP 0.0.4 / 2006-08-15

View file

@ -563,11 +563,14 @@ module Net
# if the bind was unsuccessful. # if the bind was unsuccessful.
def open def open
raise LdapError.new( "open already in progress" ) if @open_connection raise LdapError.new( "open already in progress" ) if @open_connection
@open_connection = Connection.new( :host => @host, :port => @port, :encryption => @encryption ) begin
@open_connection.bind @auth @open_connection = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
yield self @open_connection.bind @auth
@open_connection.close yield self
@open_connection = nil ensure
@open_connection.close if @open_connection
@open_connection = nil
end
end end
@ -664,14 +667,17 @@ module Net
} }
else else
@result = 0 @result = 0
conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption ) begin
if (@result = conn.bind( args[:auth] || @auth )) == 0 conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
@result = conn.search( args ) {|entry| if (@result = conn.bind( args[:auth] || @auth )) == 0
result_set << entry if result_set @result = conn.search( args ) {|entry|
yield( entry ) if block_given? result_set << entry if result_set
} yield( entry ) if block_given?
}
end
ensure
conn.close if conn
end end
conn.close
end end
@result == 0 and result_set @result == 0 and result_set
@ -743,9 +749,12 @@ module Net
if @open_connection if @open_connection
@result = @open_connection.bind auth @result = @open_connection.bind auth
else else
conn = Connection.new( :host => @host, :port => @port , :encryption => @encryption) begin
@result = conn.bind auth conn = Connection.new( :host => @host, :port => @port , :encryption => @encryption)
conn.close @result = conn.bind auth
ensure
conn.close if conn
end
end end
@result == 0 @result == 0
@ -844,11 +853,14 @@ module Net
@result = @open_connection.add( args ) @result = @open_connection.add( args )
else else
@result = 0 @result = 0
conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption) begin
if (@result = conn.bind( args[:auth] || @auth )) == 0 conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption)
@result = conn.add( args ) if (@result = conn.bind( args[:auth] || @auth )) == 0
@result = conn.add( args )
end
ensure
conn.close if conn
end end
conn.close
end end
@result == 0 @result == 0
end end
@ -939,11 +951,14 @@ module Net
@result = @open_connection.modify( args ) @result = @open_connection.modify( args )
else else
@result = 0 @result = 0
conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption ) begin
if (@result = conn.bind( args[:auth] || @auth )) == 0 conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
@result = conn.modify( args ) if (@result = conn.bind( args[:auth] || @auth )) == 0
@result = conn.modify( args )
end
ensure
conn.close if conn
end end
conn.close
end end
@result == 0 @result == 0
end end
@ -1011,11 +1026,14 @@ module Net
@result = @open_connection.rename( args ) @result = @open_connection.rename( args )
else else
@result = 0 @result = 0
conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption ) begin
if (@result = conn.bind( args[:auth] || @auth )) == 0 conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
@result = conn.rename( args ) if (@result = conn.bind( args[:auth] || @auth )) == 0
@result = conn.rename( args )
end
ensure
conn.close if conn
end end
conn.close
end end
@result == 0 @result == 0
end end
@ -1041,11 +1059,14 @@ module Net
@result = @open_connection.delete( args ) @result = @open_connection.delete( args )
else else
@result = 0 @result = 0
conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption ) begin
if (@result = conn.bind( args[:auth] || @auth )) == 0 conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
@result = conn.delete( args ) if (@result = conn.bind( args[:auth] || @auth )) == 0
@result = conn.delete( args )
end
ensure
conn.close
end end
conn.close
end end
@result == 0 @result == 0
end end