diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-03-24 20:08:08 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-03-24 22:10:26 -0700 |
commit | b7880146d13c8ed837ffa92102f1a907dd0d21ee (patch) | |
tree | 73c315afe7768473156342bdac4da9bfba78d7e6 | |
parent | 9ae7c33f4465d3d44b5ae31d9f454f89e5748fb3 (diff) | |
download | mogilefs-client-b7880146d13c8ed837ffa92102f1a907dd0d21ee.tar.gz |
This can potentially fix some file descriptor leaks (but there may not be any leaks because of GC which can mysteriously close file descriptors as I've discovered). Better safe than sorry...
-rw-r--r-- | lib/mogilefs/util.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/mogilefs/util.rb b/lib/mogilefs/util.rb index 9ccd4f0..28c7d44 100644 --- a/lib/mogilefs/util.rb +++ b/lib/mogilefs/util.rb @@ -180,9 +180,14 @@ class Socket sock = mogilefs_new(host, port, timeout) syswrite_full(sock, request, timeout) timeout -= (Time.now - t0) - raise MogileFS::Timeout, 'socket read timeout' if timeout < 0 + if timeout < 0 + sock.close rescue nil + raise MogileFS::Timeout, 'socket read timeout' + end r = IO.select([sock], nil, nil, timeout) return sock if r && r[0] + + sock.close rescue nil raise MogileFS::Timeout, 'socket read timeout' end |