diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | lib/resolv.rb | 5 |
2 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,7 @@ +Fri Mar 8 12:19:15 2002 Tanaka Akira <akr@m17n.org> + + * lib/resolv.rb: use its own thread group for background threads. + Thu Mar 7 20:08:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp> * gc.c (rb_source_filename): added. holds unique strings for file @@ -66,7 +70,7 @@ Fri Mar 1 06:25:49 2002 Tanaka Akira <akr@m17n.org> check msg_control and msg_accrights in struct msghdr. check sys/uio.h. - * socket/socket.c: include sys/uio.h if available. + * ext/socket/socket.c: include sys/uio.h if available. (thread_read_select): new function. (unix_send_io): ditto. (unix_recv_io): ditto. diff --git a/lib/resolv.rb b/lib/resolv.rb index bfe8dd8b61..d1b7c3c9f2 100644 --- a/lib/resolv.rb +++ b/lib/resolv.rb @@ -341,6 +341,8 @@ class Resolv Port = 53 UDPSize = 512 + DNSThreadGroup = ThreadGroup.new + def initialize(config="/etc/resolv.conf") @mutex = Mutex.new @config = Config.new(config) @@ -512,6 +514,7 @@ class Resolv @id = {} @id.default = -1 @thread = Thread.new { + DNSThreadGroup.add Thread.current loop { reply, from = @sock.recvfrom(UDPSize) msg = begin @@ -565,6 +568,7 @@ class Resolv @sock.fcntl(Fcntl::F_SETFD, 1) @id = -1 @thread = Thread.new { + DNSThreadGroup.add Thread.current loop { reply = @sock.recv(UDPSize) msg = begin @@ -616,6 +620,7 @@ class Resolv @id = -1 @senders = {} @thread = Thread.new { + DNSThreadGroup.add Thread.current loop { len = @sock.read(2).unpack('n') reply = @sock.read(len) |