Skip to content

Commit a3ee533

Browse files
Fix/browser port (#1545)
Co-authored-by: puzhen <1303385763@qq.com>
1 parent dd48d2a commit a3ee533

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

electron/main/index.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ interface CdpBrowser {
9999
addedAt: number;
100100
}
101101
let cdp_browser_pool: CdpBrowser[] = [];
102+
let cdpLastAssignedPort = 9223; // tracks the highest port ever assigned, never decreases
102103
let cdpHealthCheckTimer: ReturnType<typeof setInterval> | null = null;
103104

104105
const CDP_POOL_FILE = path.join(os.homedir(), '.eigent', 'cdp-browsers.json');
@@ -121,8 +122,12 @@ function loadCdpPool(): void {
121122
...b,
122123
isExternal: true,
123124
}));
125+
cdpLastAssignedPort = cdp_browser_pool.reduce(
126+
(max, b) => Math.max(max, b.port),
127+
cdpLastAssignedPort
128+
);
124129
log.info(
125-
`[CDP POOL] Loaded ${cdp_browser_pool.length} browser(s) from disk`
130+
`[CDP POOL] Loaded ${cdp_browser_pool.length} browser(s) from disk, lastAssignedPort=${cdpLastAssignedPort}`
126131
);
127132
}
128133
} catch (e) {
@@ -759,18 +764,27 @@ function registerIpcHandlers() {
759764
// Launch CDP browser with automatic port assignment
760765
ipcMain.handle('launch-cdp-browser', async () => {
761766
try {
762-
// 1. Find available port (9224–9300) by checking no CDP browser is listening
767+
// 1. Always increment port from the last assigned port
763768
// Port 9223 is reserved for the login browser
764769
let port: number | null = null;
765-
for (let p = 9224; p < 9300; p++) {
766-
if (
767-
!cdp_browser_pool.some((b) => b.port === p) &&
768-
!(await isCdpPortAlive(p))
769-
) {
770+
for (let p = cdpLastAssignedPort + 1; p < 9300; p++) {
771+
if (!(await isCdpPortAlive(p))) {
770772
port = p;
771773
break;
772774
}
773775
}
776+
// Wrap around if we hit the ceiling
777+
if (port === null) {
778+
for (let p = 9224; p <= cdpLastAssignedPort && p < 9300; p++) {
779+
if (
780+
!cdp_browser_pool.some((b) => b.port === p) &&
781+
!(await isCdpPortAlive(p))
782+
) {
783+
port = p;
784+
break;
785+
}
786+
}
787+
}
774788
if (port === null) {
775789
return { success: false, error: 'No available port in 9224-9299' };
776790
}
@@ -905,6 +919,7 @@ function registerIpcHandlers() {
905919
addedAt: Date.now(),
906920
};
907921
cdp_browser_pool.push(newBrowser);
922+
cdpLastAssignedPort = port;
908923
saveCdpPool();
909924
notifyCdpPoolChanged();
910925

0 commit comments

Comments
 (0)