Updated meshagent with deaklock detection.

Ylian Saint-Hilaire committed Aug 5, 2019 at 15:22 UTC f35a4c96a075119cb15d54364751776720dcfd5a
8 files changed +15 -14
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
meshrelay.js
+14 -13
@@ -170,7 +170,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
170 try { parent.parent.fs.mkdirSync(parent.parent.recordpath); } catch (e) { }
171 var recFilename = 'session' + ((domain.id == '')?'':'-') + domain.id + '-' + Date.now() + '-' + sessionUser.name + '-' + obj.id + '.mcrec'
172 var recFullFilename = parent.parent.path.join(parent.parent.recordpath, recFilename);
173 - console.log('OpenLog');
173 + //console.log('OpenLog');
174 parent.parent.fs.open(recFullFilename, 'w', function (err, fd) {
175 relayinfo.peer1.ws.logfile = ws.logfile = { fd: fd, lock: false };
176 ws.send('c'); // Send connect to both peers
@@ -229,21 +229,22 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
229 //if (typeof data == 'string') { console.log('Relay: ' + data); } else { console.log('Relay:' + data.length + ' byte(s)'); }
230 try {
231 this._socket.pause();
232 - if ((this.logfile != null) && (this.logfile.lock == false)) {
232 + if (this.logfile != null) {
233 // Write data to log file then perform relay
234 - /*
234 var xthis = this;
236 - console.log('Write', data.length, typeof data, data);
237 - this.logfile.lock = true;
235 try {
239 - parent.parent.fs.write(this.logfile.fd, data, function (err, bytesWritten, buffer) {
240 - xthis.logfile.lock = false;
241 - console.log('WriteDone', err, bytesWritten, buffer.length);
242 - xthis.peer.send(data, ws.flushSink);
243 - });
236 + if (typeof data == 'string') {
237 + // String write
238 + parent.parent.fs.write(this.logfile.fd, data, function (err, bytesWritten, buffer) {
239 + xthis.peer.send(data, ws.flushSink);
240 + });
241 + } else {
242 + // Binary write
243 + parent.parent.fs.write(this.logfile.fd, data, 0, data.length, function (err, bytesWritten, buffer) {
244 + xthis.peer.send(data, ws.flushSink);
245 + });
246 + }
247 } catch (ex) { console.log(ex); }
245 - */
246 - this.peer.send(data, ws.flushSink);
248 } else {
249 // Perform relay
250 this.peer.send(data, ws.flushSink);
@@ -275,7 +276,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
276 var peer = (relayinfo.peer1 == obj) ? relayinfo.peer2 : relayinfo.peer1;
277
278 // Close the recording file
278 - if (ws.logfile != null) { console.log('CloseLog'); parent.parent.fs.close(ws.logfile.fd); ws.logfile = null; peer.ws.logfile = null; }
279 + if (ws.logfile != null) { parent.parent.fs.close(ws.logfile.fd); ws.logfile = null; peer.ws.logfile = null; }
280
281 // Disconnect the peer
282 try { if (peer.relaySessionCounted) { parent.relaySessionCount--; delete peer.relaySessionCounted; } } catch (ex) { console.log(ex); }
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.3.9-e",
3 + "version": "0.3.9-f",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",