diff --git a/meshcore/agentcore.c b/meshcore/agentcore.c index 18a934921..6f5ad4a9c 100644 --- a/meshcore/agentcore.c +++ b/meshcore/agentcore.c @@ -5479,6 +5479,8 @@ int MeshAgent_AgentMode(MeshAgentHostContainer *agentHost, int paramLen, char ** { agentHost->openFrameMode = true; parseCommands = 0; enable_file_logging_simple(); + // Decorated startup marker parsed by openframe-client + openframe_printf("MeshAgent starting (build %s, self-update version %d)\n", SOURCE_COMMIT_DATE, MESH_AGENT_VERSION); } if (strcmp(param[ri], "--openframe-secret") == 0 && ((ri + 1) < paramLen)) { diff --git a/modules/agent-installer.js b/modules/agent-installer.js index 91580c58b..ba0319dce 100644 --- a/modules/agent-installer.js +++ b/modules/agent-installer.js @@ -1146,6 +1146,7 @@ function createLaunchDaemon(serviceName, companyName, installPath, serviceId, in name: serviceName, target: 'meshagent', startType: 'AUTO_START', + failureRestart: 0, // auto-start on boot, but do not restart on crash/exit parameters: ['--serviceId', serviceId], companyName: companyName }; @@ -1910,6 +1911,7 @@ function installService(params) target: target==null?(process.platform == 'win32' ? 'MeshAgent' : 'meshagent'):target, servicePath: process.execPath, startType: 'AUTO_START', + failureRestart: 0, // auto-start on boot, but do not restart on crash/exit parameters: params, _installer: true }; diff --git a/modules/service-manager.js b/modules/service-manager.js index a97962b2c..27326c3c9 100644 --- a/modules/service-manager.js +++ b/modules/service-manager.js @@ -2977,6 +2977,7 @@ function serviceManager() var stdoutpath = (options.stdout ? ('StandardOutPath\n' + options.stdout + '') : ('StandardOutPath\n/tmp/' + serviceId + '-daemon.log')); var stderrpath = (options.stderr ? ('StandardErrorPath\n' + options.stderr + '') : ('StandardErrorPath\n/tmp/' + serviceId + '-daemon.log')); var autoStart = (options.startType == 'AUTO_START' ? '' : ''); + var keepAlive = ((options.failureRestart == null || options.failureRestart > 0) ? '' : ''); // launchd restart-on-exit // Apply OpenFrame parameters formatting for macOS console.log('[DEBUG service-manager] options.parameters before processing: ' + JSON.stringify(options.parameters)); @@ -3002,7 +3003,7 @@ function serviceManager() plist += ' Disabled\n'; plist += ' \n'; plist += ' KeepAlive\n'; - plist += ' \n'; + plist += (' ' + keepAlive + '\n'); plist += ' Label\n'; plist += (' ' + serviceId + '\n'); plist += (params + '\n');