lib_net_http.rb.diff   [plain text]


--- lib/net/http.rb	2007/09/24 08:02:33	13503
+++ lib/net/http.rb	2007/09/24 08:12:24	13504
@@ -470,6 +470,7 @@
       @debug_output = nil
       @use_ssl = false
       @ssl_context = nil
+      @enable_post_connection_check = false
     end
 
     def inspect
@@ -526,6 +527,9 @@
       false   # redefined in net/https
     end
 
+    # specify enabling SSL server certificate and hostname checking.
+    attr_accessor :enable_post_connection_check
+
     # Opens TCP connection and HTTP session.
     # 
     # When this method is called with block, gives a HTTP object
@@ -584,6 +588,14 @@
           HTTPResponse.read_new(@socket).value
         end
         s.connect
+        if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
+          begin
+            s.post_connection_check(@address)
+          rescue OpenSSL::SSL::SSLError => ex
+            raise ex if @enable_post_connection_check
+            warn ex.message
+          end
+        end
       end
       on_connect
     end