Skip to content

Commit

Permalink
server: guard entire plugin load block
Browse files Browse the repository at this point in the history
  • Loading branch information
koush committed Jun 1, 2024
1 parent 2e07788 commit f9f597e
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions server/src/runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import net from 'net';
import path from 'path';
import { ParsedQs } from 'qs';
import semver from 'semver';
import { PassThrough } from 'stream';
import { Parser as TarParser } from 'tar';
import { URL } from "url";
import WebSocket, { Server as WebSocketServer } from "ws";
Expand All @@ -33,6 +32,7 @@ import { PluginHost } from './plugin/plugin-host';
import { isConnectionUpgrade, PluginHttp } from './plugin/plugin-http';
import { WebSocketConnection } from './plugin/plugin-remote-websocket';
import { getPluginVolume } from './plugin/plugin-volume';
import { CustomRuntimeWorker } from './plugin/runtime/custom-worker';
import { NodeForkWorker } from './plugin/runtime/node-fork-worker';
import { PythonRuntimeWorker } from './plugin/runtime/python-worker';
import { RuntimeWorker, RuntimeWorkerOptions } from './plugin/runtime/runtime-worker';
Expand All @@ -46,7 +46,6 @@ import { getNpmPackageInfo, PluginComponent } from './services/plugin';
import { ServiceControl } from './services/service-control';
import { UsersService } from './services/users';
import { getState, ScryptedStateManager, setState } from './state';
import { CustomRuntimeWorker } from './plugin/runtime/custom-worker';

interface DeviceProxyPair {
handler: PluginDeviceProxyHandler;
Expand Down Expand Up @@ -675,14 +674,14 @@ export class ScryptedRuntime extends PluginHttp<HttpPluginData> {

loadPlugin(plugin: Plugin, pluginDebug?: PluginDebug) {
const pluginId = plugin._id;
this.killPlugin(pluginId);
try {
this.killPlugin(pluginId);

const pluginDevices = this.findPluginDevices(pluginId);
for (const pluginDevice of pluginDevices) {
this.invalidatePluginDevice(pluginDevice._id);
}
const pluginDevices = this.findPluginDevices(pluginId);
for (const pluginDevice of pluginDevices) {
this.invalidatePluginDevice(pluginDevice._id);
}

try {
const pluginHost = new PluginHost(this, plugin, pluginDebug);
this.setupPluginHostAutoRestart(pluginHost);
this.plugins[pluginId] = pluginHost;
Expand Down

0 comments on commit f9f597e

Please sign in to comment.