diff --git a/src/vs/base/parts/ipc/node/ipc.net.ts b/src/vs/base/parts/ipc/node/ipc.net.ts index 499e8a52a06..fee0d49d4d8 100644 --- a/src/vs/base/parts/ipc/node/ipc.net.ts +++ b/src/vs/base/parts/ipc/node/ipc.net.ts @@ -31,7 +31,7 @@ export class Protocol implements IMessagePassingProtocol { readonly onMessage: Event = this._onMessage.event; - constructor(private _socket: Socket) { + constructor(private _socket: Socket, firstDataChunk?: Buffer) { let chunks: Buffer[] = []; let totalLength = 0; @@ -42,7 +42,7 @@ export class Protocol implements IMessagePassingProtocol { bodyLen: -1, }; - _socket.on('data', (data: Buffer) => { + const acceptChunk = (data: Buffer) => { chunks.push(data); totalLength += data.length; @@ -93,7 +93,12 @@ export class Protocol implements IMessagePassingProtocol { } } } - }); + }; + + if (firstDataChunk && firstDataChunk.length > 0) { + acceptChunk(firstDataChunk); + } + _socket.on('data', acceptChunk); } public send(message: any): void { diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 964e1ed4898..aebb464f8d2 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -57,7 +57,7 @@ import { IIssueService } from 'vs/platform/issue/common/issue'; import { IssueChannel } from 'vs/platform/issue/common/issueIpc'; import { IssueService } from 'vs/platform/issue/electron-main/issueService'; import { LogLevelSetterChannel } from 'vs/platform/log/common/logIpc'; -import { setUnexpectedErrorHandler } from 'vs/base/common/errors'; +import * as errors from 'vs/base/common/errors'; import { ElectronURLListener } from 'vs/platform/url/electron-main/electronUrlListener'; import { serve as serveDriver } from 'vs/platform/driver/electron-main/driver'; import { IMenubarService } from 'vs/platform/menubar/common/menubar'; @@ -97,7 +97,7 @@ export class CodeApplication { private registerListeners(): void { // We handle uncaught exceptions here to prevent electron from opening a dialog to the user - setUnexpectedErrorHandler(err => this.onUnexpectedError(err)); + errors.setUnexpectedErrorHandler(err => this.onUnexpectedError(err)); process.on('uncaughtException', err => this.onUnexpectedError(err)); app.on('will-quit', () => { diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index d953dcb6a8c..421daa0c9e4 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -7,7 +7,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { ITerminalService, ITerminalInstance, IShellLaunchConfig, ITerminalProcessExtHostProxy, ITerminalProcessExtHostRequest, ITerminalDimensions, EXT_HOST_CREATION_DELAY } from 'vs/workbench/parts/terminal/common/terminal'; import { TPromise } from 'vs/base/common/winjs.base'; -import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext, ShellLaunchConfigDto } from '../node/extHost.protocol'; +import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceShape, MainContext, IExtHostContext, ShellLaunchConfigDto } from 'vs/workbench/api/node/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; @extHostNamedCustomer(MainContext.MainThreadTerminalService) diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index 61547023c09..c5943fb7778 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -361,7 +361,7 @@ export class ExtensionHostProcessWorker { } private _createExtHostInitData(): TPromise { - return TPromise.join([this._telemetryService.getTelemetryInfo(), this._extensions]).then(([telemetryInfo, extensionDescriptions]) => { + return TPromise.join([this._telemetryService.getTelemetryInfo(), this._extensions]).then(([telemetryInfo, extensionDescriptions]) => { const configurationData: IConfigurationInitData = { ...this._configurationService.getConfigurationData(), configurationScopes: {} }; const r: IInitData = { parentPid: process.pid, diff --git a/src/vs/workbench/services/extensions/node/rpcProtocol.ts b/src/vs/workbench/services/extensions/node/rpcProtocol.ts index 6c38a0bbe90..6830dfa03c8 100644 --- a/src/vs/workbench/services/extensions/node/rpcProtocol.ts +++ b/src/vs/workbench/services/extensions/node/rpcProtocol.ts @@ -41,7 +41,7 @@ function _transformOutgoingURIs(obj: any, transformer: IURITransformer, depth: n return null; } -function transformOutgoingURIs(obj: any, transformer: IURITransformer): any { +export function transformOutgoingURIs(obj: any, transformer: IURITransformer): any { const result = _transformOutgoingURIs(obj, transformer, 0); if (result === null) { // no change