fix: LS ConnectRPC use HTTPS when detected, not port heuristic
This commit is contained in:
Binary file not shown.
@@ -122,6 +122,7 @@ function activate(context) {
|
|||||||
let lsPort = null;
|
let lsPort = null;
|
||||||
let lsCsrf = '';
|
let lsCsrf = '';
|
||||||
let lsPid = null;
|
let lsPid = null;
|
||||||
|
let lsUseTls = false; // track detected protocol
|
||||||
let lastStepIndex = {}; // cascadeId → last known step index
|
let lastStepIndex = {}; // cascadeId → last known step index
|
||||||
async function discoverLS() {
|
async function discoverLS() {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
@@ -210,8 +211,15 @@ function activate(context) {
|
|||||||
let data = '';
|
let data = '';
|
||||||
res.on('data', (chunk) => { data += chunk; });
|
res.on('data', (chunk) => { data += chunk; });
|
||||||
res.on('end', () => {
|
res.on('end', () => {
|
||||||
// Any response (even error) means ConnectRPC is here
|
|
||||||
console.log(`Gravity Bridge: [LS] port ${port} (${useTls ? 'https' : 'http'}) status=${res.statusCode} body=${data.substring(0, 200)}`);
|
console.log(`Gravity Bridge: [LS] port ${port} (${useTls ? 'https' : 'http'}) status=${res.statusCode} body=${data.substring(0, 200)}`);
|
||||||
|
// If HTTP got "HTTPS server" response, retry with HTTPS
|
||||||
|
if (!useTls && data.includes('HTTPS server')) {
|
||||||
|
tryProto(https, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (res.statusCode !== 404) {
|
||||||
|
lsUseTls = useTls; // remember which protocol worked
|
||||||
|
}
|
||||||
resolve(res.statusCode !== 404);
|
resolve(res.statusCode !== 404);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -238,7 +246,7 @@ function activate(context) {
|
|||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const http = require('http');
|
const http = require('http');
|
||||||
const https = require('https');
|
const https = require('https');
|
||||||
const proto = lsPort > 40000 ? https : http; // heuristic
|
const proto = lsUseTls ? https : http; // use detected protocol
|
||||||
const body = JSON.stringify(payload);
|
const body = JSON.stringify(payload);
|
||||||
const req = proto.request({
|
const req = proto.request({
|
||||||
hostname: '127.0.0.1',
|
hostname: '127.0.0.1',
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -101,6 +101,7 @@ export function activate(context: vscode.ExtensionContext) {
|
|||||||
let lsPort: number | null = null;
|
let lsPort: number | null = null;
|
||||||
let lsCsrf: string = '';
|
let lsCsrf: string = '';
|
||||||
let lsPid: number | null = null;
|
let lsPid: number | null = null;
|
||||||
|
let lsUseTls: boolean = false; // track detected protocol
|
||||||
let lastStepIndex: Record<string, number> = {}; // cascadeId → last known step index
|
let lastStepIndex: Record<string, number> = {}; // cascadeId → last known step index
|
||||||
|
|
||||||
async function discoverLS(): Promise<boolean> {
|
async function discoverLS(): Promise<boolean> {
|
||||||
@@ -198,8 +199,15 @@ export function activate(context: vscode.ExtensionContext) {
|
|||||||
let data = '';
|
let data = '';
|
||||||
res.on('data', (chunk: any) => { data += chunk; });
|
res.on('data', (chunk: any) => { data += chunk; });
|
||||||
res.on('end', () => {
|
res.on('end', () => {
|
||||||
// Any response (even error) means ConnectRPC is here
|
|
||||||
console.log(`Gravity Bridge: [LS] port ${port} (${useTls ? 'https' : 'http'}) status=${res.statusCode} body=${data.substring(0, 200)}`);
|
console.log(`Gravity Bridge: [LS] port ${port} (${useTls ? 'https' : 'http'}) status=${res.statusCode} body=${data.substring(0, 200)}`);
|
||||||
|
// If HTTP got "HTTPS server" response, retry with HTTPS
|
||||||
|
if (!useTls && data.includes('HTTPS server')) {
|
||||||
|
tryProto(https, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (res.statusCode !== 404) {
|
||||||
|
lsUseTls = useTls; // remember which protocol worked
|
||||||
|
}
|
||||||
resolve(res.statusCode !== 404);
|
resolve(res.statusCode !== 404);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -224,7 +232,7 @@ export function activate(context: vscode.ExtensionContext) {
|
|||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const http = require('http');
|
const http = require('http');
|
||||||
const https = require('https');
|
const https = require('https');
|
||||||
const proto = lsPort! > 40000 ? https : http; // heuristic
|
const proto = lsUseTls ? https : http; // use detected protocol
|
||||||
const body = JSON.stringify(payload);
|
const body = JSON.stringify(payload);
|
||||||
const req = proto.request({
|
const req = proto.request({
|
||||||
hostname: '127.0.0.1',
|
hostname: '127.0.0.1',
|
||||||
|
|||||||
Reference in New Issue
Block a user