Skip to content
Browse files

Ensure connections are closed. Patch by Kristian Meier.

  • Loading branch information...
1 parent afe6567 commit d6e6a97086ad49311acc2fb4d213df5c85c45c10 emiel committed Feb 27, 2009
Showing with 56 additions and 34 deletions.
  1. +4 −3 History.txt
  2. +52 −31 lib/net/ldap.rb
View
7 History.txt
@@ -1,4 +1,4 @@
-=== Net::LDAP 0.0.5 / 2008-11-xx
+=== Net::LDAP 0.0.5 / 2009-03-xx
* 13 minor enhancements:
* Added Net::LDAP::Entry#to_ldif
@@ -22,7 +22,7 @@
and marshalling.
* Migrated to 'hoe' as the new project droid.
-* 13 bugs fixed:
+* 14 bugs fixed:
* Silenced some annoying warnings in filter.rb. Thanks to "barjunk"
for pointing this out.
* Some fairly extensive performance optimizations in the BER parser.
@@ -43,7 +43,8 @@
* Allowed comma in filter strings, suggested by Kouhei.
* 04Sep07, Changed four error classes to inherit from StandardError rather
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
View
83 lib/net/ldap.rb
@@ -563,11 +563,14 @@ def get_operation_result
# if the bind was unsuccessful.
def open
raise LdapError.new( "open already in progress" ) if @open_connection
- @open_connection = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
- @open_connection.bind @auth
- yield self
- @open_connection.close
- @open_connection = nil
+ begin
+ @open_connection = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
+ @open_connection.bind @auth
+ yield self
+ ensure
+ @open_connection.close if @open_connection
+ @open_connection = nil
+ end
end
@@ -664,14 +667,17 @@ def search args = {}
}
else
@result = 0
- conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
- if (@result = conn.bind( args[:auth] || @auth )) == 0
- @result = conn.search( args ) {|entry|
- result_set << entry if result_set
- yield( entry ) if block_given?
- }
+ begin
+ conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
+ if (@result = conn.bind( args[:auth] || @auth )) == 0
+ @result = conn.search( args ) {|entry|
+ result_set << entry if result_set
+ yield( entry ) if block_given?
+ }
+ end
+ ensure
+ conn.close if conn
end
- conn.close
end
@result == 0 and result_set
@@ -743,9 +749,12 @@ def bind auth=@auth
if @open_connection
@result = @open_connection.bind auth
else
- conn = Connection.new( :host => @host, :port => @port , :encryption => @encryption)
- @result = conn.bind auth
- conn.close
+ begin
+ conn = Connection.new( :host => @host, :port => @port , :encryption => @encryption)
+ @result = conn.bind auth
+ ensure
+ conn.close if conn
+ end
end
@result == 0
@@ -844,11 +853,14 @@ def add args
@result = @open_connection.add( args )
else
@result = 0
- conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption)
- if (@result = conn.bind( args[:auth] || @auth )) == 0
- @result = conn.add( args )
+ begin
+ conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption)
+ if (@result = conn.bind( args[:auth] || @auth )) == 0
+ @result = conn.add( args )
+ end
+ ensure
+ conn.close if conn
end
- conn.close
end
@result == 0
end
@@ -939,11 +951,14 @@ def modify args
@result = @open_connection.modify( args )
else
@result = 0
- conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
- if (@result = conn.bind( args[:auth] || @auth )) == 0
- @result = conn.modify( args )
+ begin
+ conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
+ if (@result = conn.bind( args[:auth] || @auth )) == 0
+ @result = conn.modify( args )
+ end
+ ensure
+ conn.close if conn
end
- conn.close
end
@result == 0
end
@@ -1011,11 +1026,14 @@ def rename args
@result = @open_connection.rename( args )
else
@result = 0
- conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
- if (@result = conn.bind( args[:auth] || @auth )) == 0
- @result = conn.rename( args )
+ begin
+ conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
+ if (@result = conn.bind( args[:auth] || @auth )) == 0
+ @result = conn.rename( args )
+ end
+ ensure
+ conn.close if conn
end
- conn.close
end
@result == 0
end
@@ -1041,11 +1059,14 @@ def delete args
@result = @open_connection.delete( args )
else
@result = 0
- conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
- if (@result = conn.bind( args[:auth] || @auth )) == 0
- @result = conn.delete( args )
+ begin
+ conn = Connection.new( :host => @host, :port => @port, :encryption => @encryption )
+ if (@result = conn.bind( args[:auth] || @auth )) == 0
+ @result = conn.delete( args )
+ end
+ ensure
+ conn.close
end
- conn.close
end
@result == 0
end

0 comments on commit d6e6a97

Please sign in to comment.
Something went wrong with that request. Please try again.