Title: [928] trunk/jopenssl: - Fix sync needing to be set on SSLSocket
Revision
928
Author
nicksieger
Date
2008-03-07 14:41:13 -0500 (Fri, 07 Mar 2008)

Log Message

- Fix sync needing to be set on SSLSocket
- Add some debug to test_ssl tests

Modified Paths

Diff

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/SSLSocket.java (927 => 928)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/SSLSocket.java	2008-03-07 17:13:45 UTC (rev 927)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/SSLSocket.java	2008-03-07 19:41:13 UTC (rev 928)
@@ -124,6 +124,9 @@
         }
         io = args[0];
         api.callMethod(this,"io=",io);
+        // This is a bit of a hack: SSLSocket should share code with RubyBasicSocket, which always sets sync to true.
+        // Instead we set it here for now.
+        api.callMethod(io,"sync=",getRuntime().getTrue());
         c = (SocketChannel)(((RubyIO)io).getChannel());
         api.callMethod(this,"context=",ctx);
         api.callMethod(this,"sync_close=",getRuntime().getFalse());

Modified: trunk/jopenssl/test/openssl/ssl_server.rb (927 => 928)


--- trunk/jopenssl/test/openssl/ssl_server.rb	2008-03-07 17:13:45 UTC (rev 927)
+++ trunk/jopenssl/test/openssl/ssl_server.rb	2008-03-07 19:41:13 UTC (rev 928)
@@ -28,8 +28,19 @@
   end
 end
 
+if $DEBUG
+  def log(s); File.open("ssl-server-debug", "a") {|f| f.puts s}; end
+  File.open("ssl-server-debug", "w") {|f| f << ""}
+  log "server starting"
+else
+  def log(s) end
+end
+
+begin
 ca_cert  = OpenSSL::X509::Certificate.new(get_pem)
+log "got ca cert #{ca_cert.inspect}"
 ssl_cert = OpenSSL::X509::Certificate.new(get_pem)
+log "got ssl cert #{ssl_cert.inspect}"
 ssl_key  = make_key(get_pem)
 port = Integer(ARGV.shift)
 verify_mode = Integer(ARGV.shift)
@@ -49,6 +60,7 @@
 tcps = nil
 100.times{|i|
   begin
+    log "starting server on #{port+i}"
     tcps = TCPServer.new("0.0.0.0", port+i)
     port = port + i
     break
@@ -56,9 +68,11 @@
     next 
   end
 }
+log "starting ssl server"
 ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx)
 ssls.start_immediately = start_immediately
 
+log("sending pid #{Process.pid}")
 $stdout.sync = true
 $stdout.puts Process.pid
 $stdout.puts port
@@ -79,3 +93,7 @@
     ssl.close
   }
 end
+rescue
+  log $!
+  log $!.backtrace.join("\n")
+end
\ No newline at end of file

Modified: trunk/jopenssl/test/openssl/test_ssl.rb (927 => 928)


--- trunk/jopenssl/test/openssl/test_ssl.rb	2008-03-07 17:13:45 UTC (rev 927)
+++ trunk/jopenssl/test/openssl/test_ssl.rb	2008-03-07 19:41:13 UTC (rev 928)
@@ -74,6 +74,7 @@
     jruby_oop {
       begin
         cmd = [RUBY]
+        cmd << "-Ilib"
         cmd << "-d" if $DEBUG
         cmd << SSL_SERVER << port0.to_s << verify_mode.to_s
         cmd << (start_immediately ? "yes" : "no")
@@ -81,15 +82,21 @@
         server.write(@ca_cert.to_pem)
         server.write(@svr_cert.to_pem)
         server.write(@svr_key.to_pem)
-        pid = Integer(server.gets)
+        $stderr.puts "sent certs to server" if $DEBUG
+        str = server.gets
+        $stderr.puts "got pid from server: #{str}" if $DEBUG
+        pid = Integer(str)
         if port = server.gets
           if $DEBUG
             $stderr.printf("%s started: pid=%d port=%d\n", SSL_SERVER, pid, port)
           end
           block.call(server, port.to_i)
         end
+      rescue => e
+        puts e, *(e.backtrace)
       ensure
         if server
+          $stderr.puts "killing: #{pid}" if $DEBUG
           Process.kill(:KILL, pid)
           server.close
         end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to