操作
バグ #912
完了Streaming API の read_timeout を伸ばす
説明
0a51370a95a4 で Net::ReadTimeout が握り潰されるようになりましたが、そもそもタイムアウトするのがおかしいです。
Twitter のドキュメントには、30 秒おきに空行は送信するけどタイムアウトは 90 秒に設定しておけ、みたいなことが書かれてますが、
https://dev.twitter.com/streaming/overview/connecting
oauth gem の OAuth::Consumer#http の返す Net::HTTP インスタンスではなぜか read_timeout として 30 秒が設定されているようです。
手元の環境では、read_timeout を 90 秒に上書きしたところ、Net::ReadTimeout は起こらなくなりました。
diff --git a/core/lib/mikutwitter/api_shortcuts.rb b/core/lib/mikutwitter/api_shortcuts.rb
index 56ddd2a..f05c9ee 100644
--- a/core/lib/mikutwitter/api_shortcuts.rb
+++ b/core/lib/mikutwitter/api_shortcuts.rb
@@ -221,6 +221,7 @@ module MikuTwitter::APIShortcuts
parsed_url = Addressable::URI.parse(url)
stream_access_token = access_token("#{parsed_url.scheme}://#{parsed_url.host}")
http = stream_access_token.consumer.http
+ http.read_timeout = 90
http.ssl_version = 'TLSv1'
consumer = stream_access_token.consumer
request = consumer.create_signed_request(:post,
ところで、関係ないですが、TLS 1.0 を強制するのは無意味です
diff --git a/core/lib/mikutwitter/api_shortcuts.rb b/core/lib/mikutwitter/api_shortcuts.rb
index f05c9ee..0495a9c 100644
--- a/core/lib/mikutwitter/api_shortcuts.rb
+++ b/core/lib/mikutwitter/api_shortcuts.rb
@@ -222,7 +222,6 @@ module MikuTwitter::APIShortcuts
stream_access_token = access_token("#{parsed_url.scheme}://#{parsed_url.host}")
http = stream_access_token.consumer.http
http.read_timeout = 90
- http.ssl_version = 'TLSv1'
consumer = stream_access_token.consumer
request = consumer.create_signed_request(:post,
parsed_url.path,
diff --git a/core/mui/gtk_web_image_loader.rb b/core/mui/gtk_web_image_loader.rb
index 803e273..6f86d22 100644
--- a/core/mui/gtk_web_image_loader.rb
+++ b/core/mui/gtk_web_image_loader.rb
@@ -262,8 +262,7 @@ module Gdk::WebImageLoader
Net::HTTP.new(host, port || 80)
when 'https'.freeze
Net::HTTP.new(host, port || 443).tap{|_h|
- _h.use_ssl = true
- _h.ssl_version = 'TLSv1' } end
+ _h.use_ssl = true } end
http.open_timeout=5
http.read_timeout=30
pool << http
操作