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",