Skip to content

Commit 5d85ecb

Browse files
committed
Merge branch 'master' into release
2 parents ce3e318 + a1a1411 commit 5d85ecb

File tree

7 files changed

+64
-13
lines changed

7 files changed

+64
-13
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sip.js",
3-
"version": "0.11.4",
3+
"version": "0.11.5",
44
"authors": [
55
"James Criscuolo <[email protected]>",
66
"Eric Green <[email protected]>",

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "sip.js",
33
"title": "SIP.js",
44
"description": "A simple, intuitive, and powerful JavaScript signaling library",
5-
"version": "0.11.4",
5+
"version": "0.11.5",
66
"main": "dist/sip.js",
77
"browser": {
88
"./src/environment.js": "./src/environment_browser.js"
@@ -26,9 +26,7 @@
2626
"javascript"
2727
],
2828
"devDependencies": {
29-
"babel-core": "^6.26.0",
30-
"babel-loader": "^7.1.2",
31-
"babel-preset-env": "^1.6.1",
29+
"awesome-typescript-loader": "^5.2.1",
3230
"eslint": "^5.4.0",
3331
"jasmine-core": "^3.2.1",
3432
"karma": "^3.0.0",
@@ -40,6 +38,7 @@
4038
"karma-webpack": "^3.0.0",
4139
"pegjs": "^0.10.0",
4240
"pegjs-loader": "^0.5.4",
41+
"typescript": "^3.0.3",
4342
"webpack": "^4.19.0",
4443
"webpack-cli": "^3.0.8"
4544
},

src/Session.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,11 @@ InviteServerContext.prototype = Object.create({}, {
11011101
}
11021102
},
11031103

1104-
descriptionCreationFailed = function() {
1104+
descriptionCreationFailed = function(err) {
1105+
if (err instanceof SIP.Exceptions.SessionDescriptionHandlerError) {
1106+
self.logger.log(err.message);
1107+
self.logger.log(err.error);
1108+
}
11051109
// TODO: This should check the actual error and make sure it is an
11061110
// "expected" error. Otherwise it should throw.
11071111
if (self.status === C.STATUS_TERMINATED) {
@@ -1432,7 +1436,11 @@ InviteClientContext.prototype = Object.create({}, {
14321436
self.status = C.STATUS_INVITE_SENT;
14331437
self.send();
14341438
},
1435-
function onFailure() {
1439+
function onFailure(err) {
1440+
if (err instanceof SIP.Exceptions.SessionDescriptionHandlerError) {
1441+
self.logger.log(err.message);
1442+
self.logger.log(err.error);
1443+
}
14361444
if (self.status === C.STATUS_TERMINATED) {
14371445
return;
14381446
}

src/Web/Modifiers.js

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,27 @@ function stripPayload(sdp, payload) {
5454

5555
function stripMediaDescription(sdp, description) {
5656
const descriptionRegExp = new RegExp("m=" + description + ".*$", "gm");
57+
const groupRegExp = new RegExp("^a=group:.*$", "gm");
58+
5759
if (descriptionRegExp.test(sdp)) {
58-
sdp = sdp.split(/^m=/gm).filter((section) => (section.substr(0, description.length) !== description)).join('m=');
60+
let midLineToRemove;
61+
sdp = sdp.split(/^m=/gm).filter((section) => {
62+
if (section.substr(0, description.length) === description) {
63+
midLineToRemove = section.match(/^a=mid:.*$/gm);
64+
if (midLineToRemove) {
65+
midLineToRemove = midLineToRemove[0].match(/:.+$/g)[0].substr(1);
66+
}
67+
return false;
68+
}
69+
return true;
70+
}).join('m=');
71+
let groupLine = sdp.match(groupRegExp);
72+
if (groupLine && groupLine.length === 1) {
73+
groupLine = groupLine[0];
74+
const groupRegExpReplace = new RegExp("\ *" + midLineToRemove + "[^\ ]*", "g");
75+
groupLine = groupLine.replace(groupRegExpReplace, "");
76+
sdp = sdp.split(groupRegExp).join(groupLine);
77+
}
5978
}
6079
return sdp;
6180
}
@@ -89,7 +108,24 @@ Modifiers = {
89108
},
90109

91110
stripVideo: function(description) {
92-
description.sdp = stripMediaDescription(description, "video");
111+
description.sdp = stripMediaDescription(description.sdp, "video");
112+
return SIP.Utils.Promise.resolve(description);
113+
},
114+
115+
addMidLines: function(description) {
116+
let sdp = description.sdp;
117+
if (sdp.search(/^a=mid.*$/gm) === -1) {
118+
const mlines = sdp.match(/^m=.*$/gm);
119+
sdp = sdp.split(/^m=.*$/gm);
120+
mlines.forEach((elem, idx) => {
121+
mlines[idx] = elem + '\na=mid:' + idx;
122+
});
123+
sdp.forEach((elem, idx) => {
124+
sdp[idx] = elem + mlines[idx];
125+
});
126+
sdp = sdp.join('');
127+
description.sdp = sdp;
128+
}
93129
return SIP.Utils.Promise.resolve(description);
94130
}
95131
};

src/Web/Transport.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ Transport.prototype = Object.create(SIP.Transport.prototype, {
339339
if (this.noAvailableServers()) {
340340
this.logger.warn('no available ws servers left - going to closed state');
341341
this.status = C.STATUS_CLOSED;
342+
this.emit('closed');
342343
this.resetServerErrorStatus();
343344
return;
344345
}

tsconfig.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"compilerOptions": {
3+
"outDir": "./dist",
4+
"allowJs": true,
5+
"target": "es5"
6+
},
7+
"include": [
8+
"./src/**/*"
9+
]
10+
}

webpack.config.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,7 @@ module.exports = function (env) {
6161
{
6262
test: /\.js$/,
6363
exclude: /node_modules/,
64-
loader: "babel-loader",
65-
options: {
66-
presets: ['env']
67-
}
64+
loader: "awesome-typescript-loader"
6865
},
6966
{
7067
test: /\.pegjs$/,

0 commit comments

Comments
 (0)