jruby-openssl vs mri openssl - закрытое гнездо
Проблема: сбой вызовов Net::HTTP при использовании jruby с закрытым сокетом OpenSSL::SSLError, но с помощью MRI он работает нормально.
Примечание: работают вызовы на многие серверы, однако это приложение вызывает датчик cisco. Опять же, это работает через МРТ, но не Jruby. Я пробовал много разных вещей безрезультатно. Я пробовал jruby 1.6.7, 1.7 и недавно выпущенный 1.7.1.dev. Я также пробовал jruby-openssl-0.7.4, 0.7.7 и 0.8.0.pre3. Я даже пытался запустить скрипт с Ruby 1.8 и 1.9.
Сбой на https://github.com/jruby/jruby/blob/master/src/org/jruby/ext/openssl/SSLSocket.java#L404?
Аналогичная проблема в исследовании: http://jira.codehaus.org/browse/JRUBY-6346
Небольшая задняя выдержка
org/jruby/ext/openssl/Utils.java:79:in newError'
org/jruby/ext/openssl/SSL.java:92:innewSSLError'
org/jruby/ext/openssl/SSLSocket.java:192:in connectCommon'
org/jruby/ext/openssl/SSLSocket.java:162:inconnect'
org/jruby/runtime/callsite/CachingCallSite.java:306:in cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:136:incall'
org/jruby/ast/CallNoArgNode.java:64:in interpret'
org/jruby/ast/NewlineNode.java:105:ininterpret'
Я отыскивал Google без удачи. Любая помощь будет принята с благодарностью.
Следует также отметить, что я использую OSX Mountain Lion 10.8.2.
[ОБНОВИТЬ]
У меня не хватило времени на отладку, и я использовал следующий обходной путь: Gemfile
gem 'typhoeus'
Метод испытания
def send_post(url, body)
response = Typhoeus::Request.post(url,
:method => :post,
:disable_ssl_host_verification => true,
:disable_ssl_peer_verification => true,
:username => @auth[:username],
:password => @auth[:password],
:headers => {
'Accept' => 'text/xml',
'Content-type' => 'application/binary',
'Connection' => 'keepalive',
'Accept-Charset' => 'iso-8859-1,*,utf-8',
'Pragma' => 'no-cache',
'Cache-Control' => 'no-cache',
},
:body => body
)
response
end