[前][次][番号順一覧][スレッド一覧]

ruby-changes:66396

From: NAKAMURA <ko1@a...>
Date: Wed, 2 Jun 2021 01:40:28 +0900 (JST)
Subject: [ruby-changes:66396] 87d02eacd2 (ruby_2_7): merge revision(s) 9edc162583a4f685332239f6249745ad9b518cbe: [Backport #17781]

https://git.ruby-lang.org/ruby.git/commit/?id=87d02eacd2

From 87d02eacd26d0b2884016315baf2440d100f177e Mon Sep 17 00:00:00 2001
From: NAKAMURA Usaku <usa@r...>
Date: Wed, 2 Jun 2021 01:40:08 +0900
Subject: merge revision(s) 9edc162583a4f685332239f6249745ad9b518cbe: [Backport
 #17781]

	[ruby/resolv] Fix confusion of received response message

	This is a follow up for commit 33fb966197f1 ("Remove sender/message_id
	pair after response received in resolv", 2020-09-11).

	As the @senders instance variable is also used for tracking transaction
	ID allocation, simply removing an entry without releasing the ID would
	eventually deplete the ID space and cause
	Resolv::DNS.allocate_request_id to hang.

	It seems the intention of the code was to check that the received DNS
	message is actually the response for the question made within the method
	earlier. Let's have it actually do so.

	[Bug #12838] https://bugs.ruby-lang.org/issues/12838
	[Bug #17748] https://bugs.ruby-lang.org/issues/17748

	https://github.com/ruby/resolv/commit/53ca9c9209
	---
	 lib/resolv.rb | 6 +++---
	 1 file changed, 3 insertions(+), 3 deletions(-)
---
 lib/resolv.rb | 6 +++---
 version.h     | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/resolv.rb b/lib/resolv.rb
index fd5e475..45b2a93 100644
--- a/lib/resolv.rb
+++ b/lib/resolv.rb
@@ -696,17 +696,17 @@ class Resolv https://github.com/ruby/ruby/blob/trunk/lib/resolv.rb#L696
           rescue DecodeError
             next # broken DNS message ignored
           end
-          if s = sender_for(from, msg)
+          if sender == sender_for(from, msg)
             break
           else
             # unexpected DNS message ignored
           end
         end
-        return msg, s.data
+        return msg, sender.data
       end
 
       def sender_for(addr, msg)
-        @senders.delete([addr,msg.id])
+        @senders[[addr,msg.id]]
       end
 
       def close
diff --git a/version.h b/version.h
index e825e59..72bf707 100644
--- a/version.h
+++ b/version.h
@@ -2,11 +2,11 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L2
 # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
 #define RUBY_VERSION_TEENY 4
 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 188
+#define RUBY_PATCHLEVEL 189
 
 #define RUBY_RELEASE_YEAR 2021
-#define RUBY_RELEASE_MONTH 5
-#define RUBY_RELEASE_DAY 31
+#define RUBY_RELEASE_MONTH 6
+#define RUBY_RELEASE_DAY 2
 
 #include "ruby/version.h"
 
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]