Bryan's fix for meshcore.js: Added dispatcher.close() for setclip on Windows, if the dispatcher already exists

Ylian Saint-Hilaire committed Aug 27, 2022 at 15:01 UTC 70448ac197a3e85fefb31af87333f6afda7ed7ec
1 file changed +6 -4
agents/meshcore.js
+6 -4
@@ -1339,7 +1339,7 @@ function handleServerCommand(data) {
1339 }
1340 });
1341 } else {
1342 - require("clipboard").read().then(function (str) {
1342 + require('clipboard').read().then(function (str) {
1343 if (str) {
1344 MeshServerLogEx(21, [str.length], "Getting clipboard content, " + str.length + " byte(s)", data);
1345 mesh.SendCommand({ action: 'msg', type: 'getclip', sessionid: data.sessionid, data: str, tag: data.tag });
@@ -1364,6 +1364,7 @@ function handleServerCommand(data) {
1364 var domain = require('user-sessions').getDomain(uid);
1365 user = (domain + '\\' + user);
1366
1367 + if (this._dispatcher) { this._dispatcher.close(); }
1368 this._dispatcher = require('win-dispatcher').dispatch({ user: user, modules: [{ name: 'clip-dispatch', script: "module.exports = { dispatch: function dispatch(val) { require('clipboard')(val); process.exit(); } };" }], launch: { module: 'clip-dispatch', method: 'dispatch', args: [clipargs] } });
1369 this._dispatcher.parent = this;
1370 //require('events').setFinalizerMetadata.call(this._dispatcher, 'clip-dispatch');
@@ -1381,7 +1382,7 @@ function handleServerCommand(data) {
1382 }
1383 }
1384 else {
1384 - require("clipboard")(data.data);
1385 + require('clipboard')(data.data);
1386 mesh.SendCommand({ action: 'msg', type: 'setclip', sessionid: data.sessionid, success: true });
1387 } // Set the clipboard
1388 }
@@ -4322,7 +4323,7 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
4323 if (require('MeshAgent').isService) {
4324 require('clipboard').dispatchRead().then(function (str) { sendConsoleText(str, sessionid); });
4325 } else {
4325 - require("clipboard").read().then(function (str) { sendConsoleText(str, sessionid); });
4326 + require('clipboard').read().then(function (str) { sendConsoleText(str, sessionid); });
4327 }
4328 break;
4329 case 'setclip': {
@@ -4340,6 +4341,7 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
4341 var domain = require('user-sessions').getDomain(uid);
4342 user = (domain + '\\' + user);
4343
4344 + if (this._dispatcher) { this._dispatcher.close(); }
4345 this._dispatcher = require('win-dispatcher').dispatch({ user: user, modules: [{ name: 'clip-dispatch', script: "module.exports = { dispatch: function dispatch(val) { require('clipboard')(val); process.exit(); } };" }], launch: { module: 'clip-dispatch', method: 'dispatch', args: [clipargs] } });
4346 this._dispatcher.parent = this;
4347 //require('events').setFinalizerMetadata.call(this._dispatcher, 'clip-dispatch');
@@ -4357,7 +4359,7 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
4359 response = 'Setting clipboard to: "' + args['_'][0] + '"';
4360 }
4361 else {
4360 - require("clipboard")(args['_'][0]); response = 'Setting clipboard to: "' + args['_'][0] + '"';
4362 + require('clipboard')(args['_'][0]); response = 'Setting clipboard to: "' + args['_'][0] + '"';
4363 }
4364 }
4365 break;