@@ -640,7 +640,7 @@ UA.prototype.recoverTransport = function(ua) {
640640 */
641641UA . prototype . loadConfig = function ( configuration ) {
642642 // Settings and default values
643- var parameter , value , checked_value , hostport_params ,
643+ var parameter , value , checked_value , hostport_params , registrar_server ,
644644 settings = {
645645 /* Host address
646646 * Value to be set in Via sent_by and host part of Contact FQDN
@@ -654,6 +654,7 @@ UA.prototype.loadConfig = function(configuration) {
654654 register_expires : 600 ,
655655 register_min_expires : 120 ,
656656 register : true ,
657+ registrar_server : null ,
657658
658659 // Transport related parameters
659660 ws_server_max_reconnection : 3 ,
@@ -746,6 +747,13 @@ UA.prototype.loadConfig = function(configuration) {
746747 settings . authorization_user = settings . uri . user ;
747748 }
748749
750+ /* If no 'registrar_server' is set use the 'uri' value without user portion. */
751+ if ( ! settings . registrar_server ) {
752+ registrar_server = settings . uri . clone ( ) ;
753+ registrar_server . user = null ;
754+ settings . registrar_server = registrar_server ;
755+ }
756+
749757 // User no_answer_timeout
750758 settings . no_answer_timeout = settings . no_answer_timeout * 1000 ;
751759
@@ -785,10 +793,13 @@ UA.prototype.loadConfig = function(configuration) {
785793 // Fill the value of the configuration_skeleton
786794 console . log ( LOG_PREFIX + 'configuration parameters after validation:' ) ;
787795 for ( parameter in settings ) {
788- if ( parameter !== 'uri' ) {
789- console . log ( '· ' + parameter + ': ' + window . JSON . stringify ( settings [ parameter ] ) ) ;
790- } else {
791- console . log ( '· ' + parameter + ': ' + settings [ parameter ] ) ;
796+ switch ( parameter ) {
797+ case 'uri' :
798+ case 'registrar_server' :
799+ console . log ( '· ' + parameter + ': ' + settings [ parameter ] ) ;
800+ break ;
801+ default :
802+ console . log ( '· ' + parameter + ': ' + window . JSON . stringify ( settings [ parameter ] ) ) ;
792803 }
793804 UA . configuration_skeleton [ parameter ] . value = settings [ parameter ] ;
794805 }
@@ -834,6 +845,7 @@ UA.configuration_skeleton = (function() {
834845 "no_answer_timeout" , // 30 seconds.
835846 "password" ,
836847 "register_expires" , // 600 seconds.
848+ "registrar_server" ,
837849 "stun_servers" ,
838850 "trace_sip" ,
839851 "turn_servers" ,
@@ -1029,6 +1041,23 @@ UA.configuration_check = {
10291041 }
10301042 } ,
10311043
1044+ registrar_server : function ( registrar_server ) {
1045+ var parsed ;
1046+
1047+ if ( ! / ^ s i p : / i. test ( registrar_server ) ) {
1048+ registrar_server = JsSIP . C . SIP + ':' + registrar_server ;
1049+ }
1050+ parsed = JsSIP . URI . parse ( registrar_server ) ;
1051+
1052+ if ( ! parsed ) {
1053+ return ;
1054+ } else if ( parsed . user ) {
1055+ return ;
1056+ } else {
1057+ return parsed ;
1058+ }
1059+ } ,
1060+
10321061 stun_servers : function ( stun_servers ) {
10331062 var idx , stun_server ;
10341063
0 commit comments