| Index: blimp/client/session/blimp_client_session.cc
 | 
| diff --git a/blimp/client/session/blimp_client_session.cc b/blimp/client/session/blimp_client_session.cc
 | 
| index e681a0ab8b9fc7f20da2211afdd133627ef56e9d..03a085585c618b2e6176297d85fbeb13d5090096 100644
 | 
| --- a/blimp/client/session/blimp_client_session.cc
 | 
| +++ b/blimp/client/session/blimp_client_session.cc
 | 
| @@ -21,6 +21,7 @@
 | 
|  #include "blimp/net/client_connection_manager.h"
 | 
|  #include "blimp/net/common.h"
 | 
|  #include "blimp/net/null_blimp_message_processor.h"
 | 
| +#include "blimp/net/ssl_client_transport.h"
 | 
|  #include "blimp/net/tcp_client_transport.h"
 | 
|  #include "net/base/address_list.h"
 | 
|  #include "net/base/ip_address.h"
 | 
| @@ -28,6 +29,18 @@
 | 
|  
 | 
|  namespace blimp {
 | 
|  namespace client {
 | 
| +namespace {
 | 
| +
 | 
| +net::AddressList CreateAddressList(const std::vector<net::IPAddress>& addresses,
 | 
| +                                   int16_t port) {
 | 
| +  net::AddressList output_list;
 | 
| +  for (const auto& next_address : addresses) {
 | 
| +    output_list.push_back(net::IPEndPoint(next_address, port));
 | 
| +  }
 | 
| +  return output_list;
 | 
| +}
 | 
| +
 | 
| +}  // namespace
 | 
|  
 | 
|  // This class's functions and destruction are all invoked on the IO thread by
 | 
|  // the BlimpClientSession.
 | 
| @@ -65,7 +78,6 @@ class ClientNetworkComponents {
 | 
|    // they are used from the UI thread.
 | 
|    std::vector<scoped_ptr<BlimpMessageThreadPipe>> outgoing_pipes_;
 | 
|    std::vector<scoped_ptr<BlimpMessageProcessor>> outgoing_message_processors_;
 | 
| -
 | 
|    DISALLOW_COPY_AND_ASSIGN(ClientNetworkComponents);
 | 
|  };
 | 
|  
 | 
| @@ -80,8 +92,18 @@ void ClientNetworkComponents::ConnectWithAssignment(
 | 
|    DCHECK(connection_manager_);
 | 
|    connection_manager_->set_client_token(assignment.client_token);
 | 
|  
 | 
| -  connection_manager_->AddTransport(make_scoped_ptr(new TCPClientTransport(
 | 
| -      net::AddressList(assignment.ip_endpoint), nullptr)));
 | 
| +  if (assignment.ssl_port > 0) {
 | 
| +    DCHECK(assignment.cert);
 | 
| +    connection_manager_->AddTransport(make_scoped_ptr(new SSLClientTransport(
 | 
| +        CreateAddressList(assignment.ip_addresses, assignment.ssl_port),
 | 
| +        assignment.cert, nullptr)));
 | 
| +  }
 | 
| +
 | 
| +  if (assignment.tcp_port > 0) {
 | 
| +    connection_manager_->AddTransport(make_scoped_ptr(new TCPClientTransport(
 | 
| +        CreateAddressList(assignment.ip_addresses, assignment.tcp_port),
 | 
| +        nullptr)));
 | 
| +  }
 | 
|  
 | 
|    connection_manager_->Connect();
 | 
|  }
 | 
| 
 |