Index: webrtc/p2p/base/basicpacketsocketfactory.cc |
diff --git a/webrtc/p2p/base/basicpacketsocketfactory.cc b/webrtc/p2p/base/basicpacketsocketfactory.cc |
index 51e9b07fc0c660c0b7e743ea0b8ab75ba5d514a5..b794904411fab6cb3ef6a7a01e2e004b785d2480 100644 |
--- a/webrtc/p2p/base/basicpacketsocketfactory.cc |
+++ b/webrtc/p2p/base/basicpacketsocketfactory.cc |
@@ -87,8 +87,8 @@ AsyncPacketSocket* BasicPacketSocketFactory::CreateServerTcpSocket( |
return NULL; |
} |
- // If using SSLTCP, wrap the TCP socket in a pseudo-SSL socket. |
- if (opts & PacketSocketFactory::OPT_SSLTCP) { |
+ // If using fake TLS, wrap the TCP socket in a pseudo-SSL socket. |
+ if (opts & PacketSocketFactory::OPT_TLS_FAKE) { |
ASSERT(!(opts & PacketSocketFactory::OPT_TLS)); |
socket = new AsyncSSLSocket(socket); |
} |
@@ -129,15 +129,24 @@ AsyncPacketSocket* BasicPacketSocketFactory::CreateClientTcpSocket( |
proxy_info.username, proxy_info.password); |
} |
- // If using TLS, wrap the socket in an SSL adapter. |
- if (opts & PacketSocketFactory::OPT_TLS) { |
- ASSERT(!(opts & PacketSocketFactory::OPT_SSLTCP)); |
+ // Assert that at most one TLS option is used. |
+ int tlsOpts = |
+ opts & (PacketSocketFactory::OPT_TLS | PacketSocketFactory::OPT_TLS_FAKE | |
+ PacketSocketFactory::OPT_TLS_INSECURE); |
+ ASSERT((tlsOpts & (tlsOpts - 1)) == 0); |
+ if ((tlsOpts & PacketSocketFactory::OPT_TLS) || |
+ (tlsOpts & PacketSocketFactory::OPT_TLS_INSECURE)) { |
+ // Using TLS, wrap the socket in an SSL adapter. |
SSLAdapter* ssl_adapter = SSLAdapter::Create(socket); |
if (!ssl_adapter) { |
return NULL; |
} |
+ if (tlsOpts & PacketSocketFactory::OPT_TLS_INSECURE) { |
+ ssl_adapter->set_ignore_bad_cert(true); |
+ } |
+ |
socket = ssl_adapter; |
if (ssl_adapter->StartSSL(remote_address.hostname().c_str(), false) != 0) { |
@@ -145,9 +154,8 @@ AsyncPacketSocket* BasicPacketSocketFactory::CreateClientTcpSocket( |
return NULL; |
} |
- // If using SSLTCP, wrap the TCP socket in a pseudo-SSL socket. |
- } else if (opts & PacketSocketFactory::OPT_SSLTCP) { |
- ASSERT(!(opts & PacketSocketFactory::OPT_TLS)); |
+ } else if (tlsOpts & PacketSocketFactory::OPT_TLS_FAKE) { |
+ // Using fake TLS, wrap the TCP socket in a pseudo-SSL socket. |
socket = new AsyncSSLSocket(socket); |
} |