From 7867bafac43dfacb095dd94c196dd107062eb0ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Mill=C3=A1n?= Date: Wed, 6 Feb 2013 10:03:53 +0100 Subject: [PATCH] Allow using a JsSIP.URI instance everywhere specting a destination. Do not limit the target to be only a String. Ie: - ua.call(target,..) - ua.sendMessage(target,..) --- src/UA.js | 2 +- src/Utils.js | 36 +++++++++++++---------------------- src/grammar/src/grammar.pegjs | 10 +--------- 3 files changed, 15 insertions(+), 33 deletions(-) diff --git a/src/UA.js b/src/UA.js index e5ba56917..420a8dbd9 100644 --- a/src/UA.js +++ b/src/UA.js @@ -823,7 +823,7 @@ JsSIP.UA.configuration_check = { uri: function(uri) { var parsed; - parsed = JsSIP.Utils.createURI(uri); + parsed = JsSIP.Utils.parseURI(uri); if(!parsed) { console.log(JsSIP.C.LOG_UA +'Invalid uri: ' + uri); diff --git a/src/Utils.js b/src/Utils.js index b4799dce8..73e0b0cb2 100644 --- a/src/Utils.js +++ b/src/Utils.js @@ -31,7 +31,7 @@ JsSIP.Utils= { return UUID; }, - createURI: function(uri) { + parseURI: function(uri) { if (!/^sip:/.test(uri)) { uri = JsSIP.C.SIP +':'+ uri; } @@ -66,31 +66,21 @@ JsSIP.Utils= { * @param {String} [domain] */ normalizeURI: function(target, domain) { - var uri, parameter, string; - if (target) { - uri = JsSIP.grammar.parse(target, 'lazy_uri'); - - if (uri === -1) { - console.log(JsSIP.C.LOG_UTILS + 'Invalid target: '+ target); - return; - } - - if (!uri.host && !domain) { - console.log(JsSIP.C.LOG_UTILS + 'No domain specified in target nor as function parameter'); - return; + if (!target) { + return; + } else if (target instanceof JsSIP.URI) { + return target; + } else if (typeof target === 'string') { + if (target.indexOf('@') === -1) { + if (domain) { + target += '@'+ domain; + } else { + return; + } } - string = (uri.scheme || JsSIP.C.SIP) + ':'; - string += uri.user; - string += '@' + (uri.host || domain); - string += (uri.port)? ':' + uri.port : ''; - - for (parameter in uri.params) { - string += ';'+ parameter; - string += (uri.params[parameter] === undefined)? '' : '='+ uri.params[parameter]; - } - return string; + return JsSIP.Utils.parseURI(target); } }, diff --git a/src/grammar/src/grammar.pegjs b/src/grammar/src/grammar.pegjs index 91c1344d9..e79d7d019 100644 --- a/src/grammar/src/grammar.pegjs +++ b/src/grammar/src/grammar.pegjs @@ -744,12 +744,4 @@ turn_scheme = scheme: ("turns"i / "turn"i) { data.scheme = scheme; } turn_transport = transport ("udp"i / "tcp"i / unreserved*) { - data.transport = transport; } - - -// Lazy uri - -lazy_uri = (uri_scheme ':')? user (':' password)? ('@' hostport)? { - if (data.password) { - data.user = data.user +':'+ data.password; - }} \ No newline at end of file + data.transport = transport; } \ No newline at end of file