Net::HTTP response error using SSL connection
---------------------------------------------
Key: JRUBY-1222
URL: http://jira.codehaus.org/browse/JRUBY-1222
Project: JRuby
Issue Type: Bug
Components: OpenSSL
Affects Versions: JRuby 1.0.0
Environment: Win32, JDK 1.5.0_12, JRuby 1.0, jruby-openssl 0.0.3
Reporter: Dan Sketcher
Assignee: Thomas E Enebo
Priority: Critical
Attachments: https_test.rb
When making an SSL encrypted HTTP request, responses over a certain length time
out. It seems as though it cannot make it to the full end of the response.
Sometimes a stack trace is returned, sometimes it just hangs indefinitely.
Attached is a replication implementation that works on
C:\development>ruby -v
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
but not on
C:\development>jruby -v
ruby 1.8.5 (2007-06-07 rev 3841) [x86-jruby1.0]
Stack trace 1:
----------
SocketChannelImpl.java:125:in `sun.nio.ch.SocketChannelImpl.ensureWriteOpen':
java.nio.channels.ClosedChannelException: null (NativeExceptio
n)
from SocketChannelImpl.java:294:in `sun.nio.ch.SocketChannelImpl.write'
from SSLSocket.java:271:in `org.jruby.ext.openssl.SSLSocket.flushData'
from SSLSocket.java:371:in `org.jruby.ext.openssl.SSLSocket.doShutdown'
from SSLSocket.java:430:in `org.jruby.ext.openssl.SSLSocket.close'
from SSLSocket.java:437:in `org.jruby.ext.openssl.SSLSocket.sysclose'
from null:-1:in `org.jruby.ext.openssl.SSLSocketInvokersysclose0.call'
from FastInvocationCallback.java:49:in
`org.jruby.runtime.callback.FastInvocationCallback.execute'
from SimpleCallbackMethod.java:81:in
`org.jruby.internal.runtime.methods.SimpleCallbackMethod.call'
... 60 levels...
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1035:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:989:in `request_post'
from https_test.rb:22
Complete Java stackTrace
java.nio.channels.ClosedChannelException
at
sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:125)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:294)
at org.jruby.ext.openssl.SSLSocket.flushData(SSLSocket.java:271)
at org.jruby.ext.openssl.SSLSocket.doShutdown(SSLSocket.java:371)
at org.jruby.ext.openssl.SSLSocket.close(SSLSocket.java:430)
at org.jruby.ext.openssl.SSLSocket.sysclose(SSLSocket.java:437)
at org.jruby.ext.openssl.SSLSocketInvokersysclose0.call(Unknown Source)
at
org.jruby.runtime.callback.FastInvocationCallback.execute(FastInvocationCallback.java:49)
at
org.jruby.internal.runtime.methods.SimpleCallbackMethod.call(SimpleCallbackMethod.java:81)
at
org.jruby.evaluator.EvaluationState.vcallNode(EvaluationState.java:1756)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:382)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:531)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at
org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:135)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79)
at
org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:568)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:207)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at
org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:135)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79)
at
org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:568)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:207)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:531)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at
org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:135)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79)
at
org.jruby.evaluator.EvaluationState.vcallNode(EvaluationState.java:1756)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:382)
at
org.jruby.evaluator.EvaluationState.ensureNode(EvaluationState.java:986)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:247)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:531)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at
org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:135)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79)
at org.jruby.RubyObject.callMethod(RubyObject.java:564)
at
org.jruby.evaluator.EvaluationState.fCallNode(EvaluationState.java:1030)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:253)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:531)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at
org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:135)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79)
at
org.jruby.evaluator.EvaluationState.fCallNode(EvaluationState.java:1023)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:253)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at
org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:135)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79)
at
org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:71)
at
org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:568)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:207)
at
org.jruby.evaluator.EvaluationState.localAsgnNode(EvaluationState.java:1234)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:286)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:531)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at
org.jruby.evaluator.EvaluationState.rootNode(EvaluationState.java:1609)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:356)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at org.jruby.Ruby.eval(Ruby.java:287)
at org.jruby.Ruby.compileOrFallbackAndRun(Ruby.java:315)
at org.jruby.Main.runInterpreter(Main.java:228)
at org.jruby.Main.runInterpreter(Main.java:173)
at org.jruby.Main.run(Main.java:120)
at org.jruby.Main.main(Main.java:95)
----------
Stack trace 2:
----------
C:/jruby-1.0/lib/ruby/1.8/net/protocol.rb:91:in `read': End of file reached
(EOFError)
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2230:in `read_chunked'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2204:in `read_body_0'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2170:in `read_body'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2195:in `body'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2134:in `reading_body'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1051:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1034:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:989:in `start'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1035:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:989:in `request_post'
from http_test.rb:20
----------
Stack trace 3:
----------
C:/jruby-1.0/lib/ruby/1.8/net/protocol.rb:120:in `readuntil': End of file
reached (EOFError)
from C:/jruby-1.0/lib/ruby/1.8/net/protocol.rb:126:in `readline'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2224:in `read_chunked'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2204:in `read_body_0'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2170:in `read_body'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2195:in `body'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:2134:in `reading_body'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1051:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1034:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:989:in `start'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:1035:in `request'
from C:/jruby-1.0/lib/ruby/1.8/net/http.rb:989:in `request_post'
from http_test.rb:20
----------
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email