OpenSSL/drb problem

  • Thread starter Nathaniel Talbott
  • Start date
N

Nathaniel Talbott

Well, I have DRb and OpenSSL working together! I'm running in to a bit of
trouble , though, and would appreciate any help ya'll can offer. When I run
my client/server app with small messages, it works great. When I run it with
large messages, though, things aren't so happy...

When the app is run, I can connect and log in to the server without trouble
(all over SSL). However, once I'm logged in and request a large chunk of
data from the server, the client application hangs waiting for the reply to
finish. Now, two things can happen at this point:

1) If I terminate the server, the client comes up and displays the correct
information. It appears that the client is waiting for the socket to be
closed, and terminating the server causes this to happen.

2) If I terminate the client, I get the following error on the server (and
it dies):

D, [2003-08-06T12:09:25.185562 #26009] DEBUG -- SE Server: #urls called
/usr/lib/ruby/site_ruby/1.8/dbi/dbi.rb:318: warning: method redefined;
discarding old fraction
Exception `OpenSSL::SSL::SSLError' at
/usr/lib/ruby/1.8/openssl/buffering.rb:33
- SSL_read::
Exception `OpenSSL::SSL::SSLError' at
/usr/lib/ruby/1.8/openssl/buffering.rb:139
- SSL_write::
Exception `OpenSSL::SSL::SSLError' at
/usr/lib/ruby/1.8/openssl/buffering.rb:139
- SSL_write:: bad write retry
/usr/lib/ruby/1.8/openssl/buffering.rb:139:in `syswrite': SSL_write:: bad
write
retry (OpenSSL::SSL::SSLError)
from /usr/lib/ruby/1.8/openssl/buffering.rb:139:in `do_write'
from /usr/lib/ruby/1.8/openssl/buffering.rb:181:in `flush'
from /usr/lib/ruby/1.8/openssl/buffering.rb:186:in `close'
from /usr/lib/ruby/site_ruby/1.8/drb/ssl.rb:167:in `close'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:725:in `main_loop'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:711:in `loop'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:729:in `main_loop'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:707:in `start'
... 9 levels...
from ./se/server/baserunner.rb:72:in `start'
from ./se/server/baserunner.rb:59:in `send'
from ./se/server/baserunner.rb:59:in `run'
from se/server.rb:58

It appears that buffering is interacting badly with a large message size.
I'll continue investigating, but if anyone can help me out, that would be
great!

Thanks,


Nathaniel

<:((><
 
M

Michael Garriss

Nathaniel said:
Well, I have DRb and OpenSSL working together! I'm running in to a bit of
trouble , though, and would appreciate any help ya'll can offer. When I run
my client/server app with small messages, it works great. When I run it with
large messages, though, things aren't so happy...

When the app is run, I can connect and log in to the server without trouble
(all over SSL). However, once I'm logged in and request a large chunk of
data from the server, the client application hangs waiting for the reply to
finish. Now, two things can happen at this point:

1) If I terminate the server, the client comes up and displays the correct
information. It appears that the client is waiting for the socket to be
closed, and terminating the server causes this to happen.

2) If I terminate the client, I get the following error on the server (and
it dies):

D, [2003-08-06T12:09:25.185562 #26009] DEBUG -- SE Server: #urls called
/usr/lib/ruby/site_ruby/1.8/dbi/dbi.rb:318: warning: method redefined;
discarding old fraction
Exception `OpenSSL::SSL::SSLError' at
/usr/lib/ruby/1.8/openssl/buffering.rb:33
- SSL_read::
Exception `OpenSSL::SSL::SSLError' at
/usr/lib/ruby/1.8/openssl/buffering.rb:139
- SSL_write::
Exception `OpenSSL::SSL::SSLError' at
/usr/lib/ruby/1.8/openssl/buffering.rb:139
- SSL_write:: bad write retry
/usr/lib/ruby/1.8/openssl/buffering.rb:139:in `syswrite': SSL_write:: bad
write
retry (OpenSSL::SSL::SSLError)
from /usr/lib/ruby/1.8/openssl/buffering.rb:139:in `do_write'
from /usr/lib/ruby/1.8/openssl/buffering.rb:181:in `flush'
from /usr/lib/ruby/1.8/openssl/buffering.rb:186:in `close'
from /usr/lib/ruby/site_ruby/1.8/drb/ssl.rb:167:in `close'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:725:in `main_loop'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:711:in `loop'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:729:in `main_loop'
from /usr/lib/ruby/site_ruby/1.8/drb/drb.rb:707:in `start'
... 9 levels...
from ./se/server/baserunner.rb:72:in `start'
from ./se/server/baserunner.rb:59:in `send'
from ./se/server/baserunner.rb:59:in `run'
from se/server.rb:58

It appears that buffering is interacting badly with a large message size.
I'll continue investigating, but if anyone can help me out, that would be
great!

Thanks,


Nathaniel

<:((><
I can not help you but I would love to hear more about your experience
with DRb and OpenSSL. I'm in the process of working on a client/server
app that uses DRb and the security issue it in the back (or side, or
front) of my head, nagging me. I currently have no security other then
what DRb provides. Can anyone speak to the security issues of DRb?

Michael
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,216
Latest member
topweb3twitterchannels

Latest Threads

Top