diff --git a/ChangeLog b/ChangeLog index e2dd31508f..25611e6406 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Apr 6 22:12:01 2013 Tanaka Akira + + * lib/resolv.rb (Resolv::DNS.fetch_resource): New method to obtain + full result. + [ruby-dev:43587] [Feature #4788] proposed by Makoto Kishimoto. + Sat Apr 6 20:17:51 2013 Tanaka Akira * ext/socket/socket.c (rsock_sys_fail_raddrinfo): Renamed from diff --git a/NEWS b/NEWS index 300175fd0a..a1f4fd5ec0 100644 --- a/NEWS +++ b/NEWS @@ -46,6 +46,10 @@ with all sufficient information, see the ChangeLog file. * Pathname#write * Pathname#binwrite +* Resolv + * New methods: + * Resolv::DNS.fetch_resource + * Rinda::RingServer, Rinda::RingFinger * Rinda now supports multicast sockets. See Rinda::RingServer and Rinda::RingFinger for details. diff --git a/lib/resolv.rb b/lib/resolv.rb index cfdca8be5a..7ad74e1517 100644 --- a/lib/resolv.rb +++ b/lib/resolv.rb @@ -506,6 +506,12 @@ class Resolv # #getresource for argument details. def each_resource(name, typeclass, &proc) + fetch_resource(name, typeclass) {|reply, reply_name| + extract_resources(reply, reply_name, typeclass, &proc) + } + end + + def fetch_resource(name, typeclass) lazy_initialize requester = make_udp_requester senders = {} @@ -532,7 +538,7 @@ class Resolv # response will not fit in an untruncated UDP packet. redo else - extract_resources(reply, reply_name, typeclass, &proc) + yield(reply, reply_name) end return when RCode::NXDomain