[#69616] [Ruby trunk - Feature #11258] add 'x' mode character for O_EXCL — cremno@...
Issue #11258 has been updated by cremno phobia.
3 messages
2015/06/16
[#69643] [Ruby trunk - Misc #11276] [RFC] compile.c: convert to use ccan/list — normalperson@...
Issue #11276 has been updated by Eric Wong.
3 messages
2015/06/17
[#69751] [Ruby trunk - Bug #11001] 2.2.1 Segmentation fault in reserve_stack() function. — kubo@...
Issue #11001 has been updated by Takehiro Kubo.
3 messages
2015/06/27
[ruby-core:69633] [Ruby trunk - Bug #11121] openssl ext does not handle EWOULDBLOCK
From:
pep@...
Date:
2015-06-17 15:19:05 UTC
List:
ruby-core #69633
Issue #11121 has been updated by Pep Turr坦 Mauri.
Thanks for the feedback and apologies for the delay here - it took a while to do further testing and confirming with the 3rd party who originally hit the problem.
We couldn't reproduce this with more recent versions. 3rd party confirmed that they can't reproduce with ruby 2.1.6p336.
They hit some unrelated problems installing 2.2 but I think at this point it's safe to say the problem doesn't reproduce in current versions and can be closed.
----------------------------------------
Bug #11121: openssl ext does not handle EWOULDBLOCK
https://bugs.ruby-lang.org/issues/11121#change-52985
* Author: Pep Turr坦 Mauri
* Status: Feedback
* Priority: Normal
* Assignee:
* ruby -v: ruby 1.9.3p551 (2014-11-13) [i386-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
On Windows, non-blocking IO on sockets seems to return EWOULDBLOCK instead of EAGAIN. The openssl ruby library only handles EAGAIN, which results in EWOULDBLOCK being raised to the caller.
This was noticed while using httpclient to send a POST request to an https server via an http proxy on a Windows system:
~~~
A non-blocking socket operation could not be completed immediately. (Errno::EWOULDBLOCK)
C:/Ruby193/lib/ruby/1.9.1/openssl/buffering.rb:53:in `sysread'
C:/Ruby193/lib/ruby/1.9.1/openssl/buffering.rb:53:in `sysread'
C:/Ruby193/lib/ruby/1.9.1/openssl/buffering.rb:53:in `fill_rbuff'
C:/Ruby193/lib/ruby/1.9.1/openssl/buffering.rb:200:in `gets'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:356:in `gets'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:876:in `block in parse_header'
C:/Ruby193/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
C:/Ruby193/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:872:in `parse_header'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:833:in `connect_ssl_proxy'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:753:in `block in connect'
C:/Ruby193/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
C:/Ruby193/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:746:in `connect'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:612:in `query'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/httpclient-2.6.0.1/lib/httpclient/session.rb:164:in `query'
...
~~~
We could only reproduce it in this environment so far (old version, invoking this particular call, over a proxy) but I believe the same problem can appear at any time with current versions.
An example from current trunk (ext/openssl/lib/openssl/buffering.rb):
~~~
def fill_rbuff
begin
@rbuffer << self.sysread(BLOCK_SIZE)
rescue Errno::EAGAIN
retry
rescue EOFError
@eof = true
end
end
~~~
there are multiple references in that file, e.g.
https://github.com/ruby/ruby/blob/trunk/ext/openssl/lib/openssl/buffering.rb#L62
https://github.com/ruby/ruby/blob/trunk/ext/openssl/lib/openssl/buffering.rb#L327
--
https://bugs.ruby-lang.org/