|  | @@ -93,7 +93,8 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def __init__(
 | 
	
		
			
				|  |  |        self, host, port, pool, request_serializers, response_deserializers,
 | 
	
		
			
				|  |  | -      secure, root_certificates, private_key, certificate_chain):
 | 
	
		
			
				|  |  | +      secure, root_certificates, private_key, certificate_chain,
 | 
	
		
			
				|  |  | +      server_host_override=None):
 | 
	
		
			
				|  |  |      """Constructor.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      Args:
 | 
	
	
		
			
				|  | @@ -111,6 +112,8 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |          key should be used.
 | 
	
		
			
				|  |  |        certificate_chain: The PEM-encoded certificate chain to use or None if
 | 
	
		
			
				|  |  |          no certificate chain should be used.
 | 
	
		
			
				|  |  | +      server_host_override: (For testing only) the target name used for SSL
 | 
	
		
			
				|  |  | +        host name checking.
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      self._condition = threading.Condition()
 | 
	
		
			
				|  |  |      self._host = host
 | 
	
	
		
			
				|  | @@ -132,6 +135,7 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |      self._root_certificates = root_certificates
 | 
	
		
			
				|  |  |      self._private_key = private_key
 | 
	
		
			
				|  |  |      self._certificate_chain = certificate_chain
 | 
	
		
			
				|  |  | +    self._server_host_override = server_host_override
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def _on_write_event(self, operation_id, event, rpc_state):
 | 
	
		
			
				|  |  |      if event.write_accepted:
 | 
	
	
		
			
				|  | @@ -327,7 +331,8 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |      with self._condition:
 | 
	
		
			
				|  |  |        self._completion_queue = _low.CompletionQueue()
 | 
	
		
			
				|  |  |        self._channel = _low.Channel(
 | 
	
		
			
				|  |  | -          '%s:%d' % (self._host, self._port), self._client_credentials)
 | 
	
		
			
				|  |  | +          '%s:%d' % (self._host, self._port), self._client_credentials,
 | 
	
		
			
				|  |  | +          server_host_override=self._server_host_override)
 | 
	
		
			
				|  |  |      return self
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def _stop(self):
 | 
	
	
		
			
				|  | @@ -388,7 +393,8 @@ class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def __init__(
 | 
	
		
			
				|  |  |        self, host, port, request_serializers, response_deserializers, secure,
 | 
	
		
			
				|  |  | -      root_certificates, private_key, certificate_chain):
 | 
	
		
			
				|  |  | +      root_certificates, private_key, certificate_chain,
 | 
	
		
			
				|  |  | +      server_host_override=None):
 | 
	
		
			
				|  |  |      self._host = host
 | 
	
		
			
				|  |  |      self._port = port
 | 
	
		
			
				|  |  |      self._request_serializers = request_serializers
 | 
	
	
		
			
				|  | @@ -397,6 +403,7 @@ class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |      self._root_certificates = root_certificates
 | 
	
		
			
				|  |  |      self._private_key = private_key
 | 
	
		
			
				|  |  |      self._certificate_chain = certificate_chain
 | 
	
		
			
				|  |  | +    self._server_host_override = server_host_override
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      self._lock = threading.Lock()
 | 
	
		
			
				|  |  |      self._pool = None
 | 
	
	
		
			
				|  | @@ -415,7 +422,8 @@ class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated):
 | 
	
		
			
				|  |  |        self._rear_link = RearLink(
 | 
	
		
			
				|  |  |            self._host, self._port, self._pool, self._request_serializers,
 | 
	
		
			
				|  |  |            self._response_deserializers, self._secure, self._root_certificates,
 | 
	
		
			
				|  |  | -          self._private_key, self._certificate_chain)
 | 
	
		
			
				|  |  | +          self._private_key, self._certificate_chain,
 | 
	
		
			
				|  |  | +          server_host_override=self._server_host_override)
 | 
	
		
			
				|  |  |        self._rear_link.join_fore_link(self._fore_link)
 | 
	
		
			
				|  |  |        self._rear_link.start()
 | 
	
		
			
				|  |  |      return self
 | 
	
	
		
			
				|  | @@ -477,7 +485,7 @@ def activated_rear_link(
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def secure_activated_rear_link(
 | 
	
		
			
				|  |  |      host, port, request_serializers, response_deserializers, root_certificates,
 | 
	
		
			
				|  |  | -    private_key, certificate_chain):
 | 
	
		
			
				|  |  | +    private_key, certificate_chain, server_host_override=None):
 | 
	
		
			
				|  |  |    """Creates a RearLink that is also an activated.Activated.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    The returned object is only valid for use between calls to its start and stop
 | 
	
	
		
			
				|  | @@ -496,7 +504,10 @@ def secure_activated_rear_link(
 | 
	
		
			
				|  |  |        should be used.
 | 
	
		
			
				|  |  |      certificate_chain: The PEM-encoded certificate chain to use or None if no
 | 
	
		
			
				|  |  |        certificate chain should be used.
 | 
	
		
			
				|  |  | +    server_host_override: (For testing only) the target name used for SSL
 | 
	
		
			
				|  |  | +      host name checking.
 | 
	
		
			
				|  |  |    """
 | 
	
		
			
				|  |  |    return _ActivatedRearLink(
 | 
	
		
			
				|  |  |        host, port, request_serializers, response_deserializers, True,
 | 
	
		
			
				|  |  | -      root_certificates, private_key, certificate_chain)
 | 
	
		
			
				|  |  | +      root_certificates, private_key, certificate_chain,
 | 
	
		
			
				|  |  | +      server_host_override=server_host_override)
 |