Skip to content

Commit c79037e

Browse files
committed
Added 'registrar_server' UA configuration parameter. See the doc at http://jssip.net/documentation/devel/api/ua_configuration_parameters/#parameter_registrar_server.
1 parent e1dd5d8 commit c79037e

File tree

4 files changed

+45
-11
lines changed

4 files changed

+45
-11
lines changed

src/Registrator.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ Registrator = function(ua, transport) {
1818
this.ua = ua;
1919
this.transport = transport;
2020

21+
this.registrar = ua.configuration.registrar_server;
2122
this.expires = ua.configuration.register_expires;
2223
this.min_expires = ua.configuration.register_min_expires;
2324

2425
// Call-ID and CSeq values RFC3261 10.2
2526
this.call_id = JsSIP.Utils.createRandomToken(22);
2627
this.cseq = 80;
2728

28-
this.registrar = 'sip:'+ ua.configuration.hostport_params;
2929
// this.to_uri
3030
this.to_uri = ua.configuration.uri;
3131

src/UA.js

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,7 @@ UA.prototype.recoverTransport = function(ua) {
640640
*/
641641
UA.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 (!/^sip:/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

test/helpers.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ TestJsSIP.Helpers = {
2121
hack_via_tcp: false,
2222
hack_ip_in_contact: false,
2323
uri: 'sip:[email protected]',
24+
registrar_server: 'sip:registrar.jssip.net:6060;transport=tcp',
2425
ws_servers: [{'ws_uri':'ws://localhost:12345','sip_uri':'<sip:localhost:12345;transport=ws;lr>','weight':0,'status':0,'scheme':'WS'}],
2526
display_name: 'Fake UA ð→€ł !!!',
2627
authorization_user: 'fakeUA'
@@ -31,7 +32,8 @@ TestJsSIP.Helpers = {
3132
ws_servers: 'ws://localhost:12345',
3233
display_name: 'Fake UA ð→€ł !!!',
3334
register: false,
34-
use_preloaded_route: true
35+
use_preloaded_route: true,
36+
registrar_server: 'registrar.jssip.NET:6060;TRansport=TCP'
3537
},
3638

3739
createFakeUA: function() {

test/test-UA-no-WebRTC.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ test('UA no WS connection', function() {
2121
strictEqual(ua.contact.toString({anonymous: true, outbound: true}), '<sip:[email protected];transport=ws;ob>');
2222

2323
for (parameter in TestJsSIP.Helpers.DEFAULT_JSSIP_CONFIGURATION_AFTER_START) {
24-
if (parameter !== 'uri') {
25-
deepEqual(ua.configuration[parameter], TestJsSIP.Helpers.DEFAULT_JSSIP_CONFIGURATION_AFTER_START[parameter], 'testing parameter ' + parameter);
26-
} else {
27-
deepEqual(ua.configuration[parameter].toString(), TestJsSIP.Helpers.DEFAULT_JSSIP_CONFIGURATION_AFTER_START[parameter], 'testing parameter ' + parameter);
24+
switch(parameter) {
25+
case 'uri':
26+
case 'registrar_server':
27+
deepEqual(ua.configuration[parameter].toString(), TestJsSIP.Helpers.DEFAULT_JSSIP_CONFIGURATION_AFTER_START[parameter], 'testing parameter ' + parameter);
28+
break;
29+
default:
30+
deepEqual(ua.configuration[parameter], TestJsSIP.Helpers.DEFAULT_JSSIP_CONFIGURATION_AFTER_START[parameter], 'testing parameter ' + parameter);
2831
}
2932
}
3033

0 commit comments

Comments
 (0)