From: noreply@... Date: 2005-07-20T00:40:41+09:00 Subject: [ ruby-Bugs-2131 ] ruby ( v183) bcc32: using Socket.new with timeout -> files not closed Bugs item #2131, was opened at 2005-07-19 17:34 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=2131&group_id=426 Category: Standard Library Group: None Status: Open Resolution: None Priority: 3 Submitted By: Jan Mehnert (janmehnert) Assigned to: Nobody (None) Summary: ruby ( v183) bcc32: using Socket.new with timeout -> files not closed Initial Comment: I use ruby 1.8.3 (2005-07-11) and compiled it with Borland bcc32 v5.5.1 (W98) and v5.6.4 (Win XP). If Socket.new is interruptet then I run out of filehandels. In W98 I can't close sockets anyway. If I use ruby-1.8.3-preview1-i386-mswin32 it works but this version it is not stable for me. If I mix mswin and borland vcl-dll's (over Win32API) it crashs very often. It is a bcc32 problem? Example: # bcc32 v5.6.4 Win XP # if the connection is broken this program # end up with something like # - socket(2) : Too many open files (Errno::EMFILE) # additional problem in W98 (bcc32 v5.5.1) # close every time fails with: # eth_mini_test.rbw:32:in `close': Unknown Error (Errno::ENOTSOCK) require 'socket' require 'timeout' def mkConnection(ip,port) begin @sok.close if @sok and not @sok.closed? timeout(0.5) do @sok = TCPSocket.new(ip,port) end rescue Exception if $!.kind_of?( Timeout::Error) print '.' else raise end STDOUT.flush sleep(0.5) retry end end mkConnection('192.168.123.223',3000) p @sok if @sok p @sok.closed? @sok.close p @sok.closed? end ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=2131&group_id=426