Call SSL_shutdown in OpenSSLStreamAdapter::Cleanup.

BUG=crbug/414211
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/22739004

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@7293 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/base/opensslstreamadapter.cc b/base/opensslstreamadapter.cc
index 070a948..133eb72 100644
--- a/base/opensslstreamadapter.cc
+++ b/base/opensslstreamadapter.cc
@@ -695,6 +695,12 @@
   }
 
   if (ssl_) {
+    int ret = SSL_shutdown(ssl_);
+    if (ret < 0) {
+      LOG(LS_WARNING) << "SSL_shutdown failed, error = "
+                      << SSL_get_error(ssl_, ret);
+    }
+
     SSL_free(ssl_);
     ssl_ = NULL;
   }
diff --git a/base/sslstreamadapter_unittest.cc b/base/sslstreamadapter_unittest.cc
index f7dcb71..0538314 100644
--- a/base/sslstreamadapter_unittest.cc
+++ b/base/sslstreamadapter_unittest.cc
@@ -691,6 +691,13 @@
   TestHandshake();
 };
 
+// Test that closing the connection on one side updates the other side.
+TEST_F(SSLStreamAdapterTestTLS, TestTLSClose) {
+  TestHandshake();
+  client_ssl_->Close();
+  EXPECT_EQ_WAIT(rtc::SS_CLOSED, server_ssl_->GetState(), handshake_wait_);
+};
+
 // Test transfer -- trivial
 TEST_F(SSLStreamAdapterTestTLS, TestTLSTransfer) {
   TestHandshake();