mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45:58 +01:00
Detect sends on closed websocket explicitly.
It turns out that send on a closed websocket doesn't throw, so handle this case explicitly. Thanks to Giuseppe Castagna for noticing.
This commit is contained in:
parent
191624130a
commit
f70ff2424e
1 changed files with 39 additions and 21 deletions
|
@ -67,10 +67,13 @@ Connection.prototype.close = function(sendit) {
|
|||
this.pc.close();
|
||||
|
||||
if(sendit) {
|
||||
try {
|
||||
send({
|
||||
type: 'close',
|
||||
id: this.id,
|
||||
});
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -526,7 +529,6 @@ function serverConnect() {
|
|||
|
||||
return new Promise((resolve, reject) => {
|
||||
socket.onerror = function(e) {
|
||||
console.error(e);
|
||||
reject(e.error ? e.error : e);
|
||||
};
|
||||
socket.onopen = function(e) {
|
||||
|
@ -534,14 +536,21 @@ function serverConnect() {
|
|||
resetChat();
|
||||
setConnected(true);
|
||||
let up = getUserPass();
|
||||
try {
|
||||
send({
|
||||
type: 'handshake',
|
||||
id: myid,
|
||||
group: group,
|
||||
username: up.username,
|
||||
password: up.password,
|
||||
});
|
||||
})
|
||||
sendRequest(document.getElementById('requestselect').value);
|
||||
} catch(e) {
|
||||
console.error(e);
|
||||
displayError(e);
|
||||
reject(e);
|
||||
return;
|
||||
}
|
||||
resolve();
|
||||
};
|
||||
socket.onclose = function(e) {
|
||||
|
@ -730,6 +739,10 @@ async function addIceCandidates(conn) {
|
|||
function send(m) {
|
||||
if(!m)
|
||||
throw(new Error('Sending null message'));
|
||||
if(socket.readyState !== socket.OPEN) {
|
||||
// send on a closed connection doesn't throw
|
||||
throw(new Error('Connection is not open'));
|
||||
}
|
||||
return socket.send(JSON.stringify(m));
|
||||
}
|
||||
|
||||
|
@ -993,14 +1006,19 @@ function handleInput() {
|
|||
return;
|
||||
}
|
||||
|
||||
addToChatbox(myid, username, message, me);
|
||||
send({
|
||||
try {
|
||||
let a = send({
|
||||
type: 'chat',
|
||||
id: myid,
|
||||
username: username,
|
||||
value: message,
|
||||
me: me,
|
||||
});
|
||||
addToChatbox(myid, username, message, me);
|
||||
} catch(e) {
|
||||
console.error(e);
|
||||
displayError(e);
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('inputform').onsubmit = function(e) {
|
||||
|
|
Loading…
Reference in a new issue