@@ -8,7 +8,7 @@ use super::{
88use crate :: {
99 dialog:: DialogId ,
1010 rsip_ext:: destination_from_request,
11- transport:: { SipAddr , TransportEvent , TransportLayer } ,
11+ transport:: { transport_layer :: DomainResolver , SipAddr , TransportEvent , TransportLayer } ,
1212 Error , Result , VERSION ,
1313} ;
1414use async_trait:: async_trait;
@@ -146,6 +146,7 @@ pub struct EndpointBuilder {
146146 message_inspector : Option < Box < dyn MessageInspector > > ,
147147 target_locator : Option < Box < dyn TargetLocator > > ,
148148 transport_inspector : Option < Box < dyn TransportEventInspector > > ,
149+ domain_resolver : Option < Box < dyn DomainResolver > > ,
149150}
150151
151152/// SIP Endpoint
@@ -647,12 +648,15 @@ impl EndpointBuilder {
647648 message_inspector : None ,
648649 target_locator : None ,
649650 transport_inspector : None ,
651+ domain_resolver : None ,
650652 }
651653 }
654+
652655 pub fn with_option ( & mut self , option : EndpointOption ) -> & mut Self {
653656 self . option = Some ( option) ;
654657 self
655658 }
659+
656660 pub fn with_user_agent ( & mut self , user_agent : & str ) -> & mut Self {
657661 self . user_agent = user_agent. to_string ( ) ;
658662 self
@@ -693,13 +697,20 @@ impl EndpointBuilder {
693697 self
694698 }
695699
700+ pub fn with_domain_resolver ( & mut self , resolver : Box < dyn DomainResolver > ) -> & mut Self {
701+ self . domain_resolver = Some ( resolver) ;
702+ self
703+ }
704+
696705 pub fn build ( & mut self ) -> Endpoint {
697706 let cancel_token = self . cancel_token . take ( ) . unwrap_or_default ( ) ;
698-
699- let transport_layer = self
700- . transport_layer
701- . take ( )
702- . unwrap_or ( TransportLayer :: new ( cancel_token. child_token ( ) ) ) ;
707+ let transport_layer = self . transport_layer . take ( ) . unwrap_or_else ( || {
708+ if let Some ( resolver) = self . domain_resolver . take ( ) {
709+ TransportLayer :: new_with_domain_resolver ( cancel_token. clone ( ) , resolver)
710+ } else {
711+ TransportLayer :: new ( cancel_token. clone ( ) )
712+ }
713+ } ) ;
703714
704715 let allows = self . allows . to_owned ( ) ;
705716 let user_agent = self . user_agent . to_owned ( ) ;
0 commit comments