mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-21 20:24:42 +00:00
Merge pull request #1940 from lightpanda-io/fix-mcp-crash
mcp: initialize server in mcpThread to avoid V8 isolate crashes
This commit is contained in:
17
src/main.zig
17
src/main.zig
@@ -150,12 +150,7 @@ fn run(allocator: Allocator, main_arena: Allocator) !void {
|
|||||||
|
|
||||||
log.opts.format = .logfmt;
|
log.opts.format = .logfmt;
|
||||||
|
|
||||||
var stdout = std.fs.File.stdout().writer(&.{});
|
var worker_thread = try std.Thread.spawn(.{}, mcpThread, .{ allocator, app });
|
||||||
|
|
||||||
var mcp_server: *lp.mcp.Server = try .init(allocator, app, &stdout.interface);
|
|
||||||
defer mcp_server.deinit();
|
|
||||||
|
|
||||||
var worker_thread = try std.Thread.spawn(.{}, mcpThread, .{ mcp_server, app });
|
|
||||||
defer worker_thread.join();
|
defer worker_thread.join();
|
||||||
|
|
||||||
app.network.run();
|
app.network.run();
|
||||||
@@ -171,8 +166,16 @@ fn fetchThread(app: *App, url: [:0]const u8, fetch_opts: lp.FetchOpts) void {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mcpThread(mcp_server: *lp.mcp.Server, app: *App) void {
|
fn mcpThread(allocator: std.mem.Allocator, app: *App) void {
|
||||||
defer app.network.stop();
|
defer app.network.stop();
|
||||||
|
|
||||||
|
var stdout = std.fs.File.stdout().writer(&.{});
|
||||||
|
var mcp_server: *lp.mcp.Server = lp.mcp.Server.init(allocator, app, &stdout.interface) catch |err| {
|
||||||
|
log.fatal(.mcp, "mcp init error", .{ .err = err });
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
defer mcp_server.deinit();
|
||||||
|
|
||||||
var stdin_buf: [64 * 1024]u8 = undefined;
|
var stdin_buf: [64 * 1024]u8 = undefined;
|
||||||
var stdin = std.fs.File.stdin().reader(&stdin_buf);
|
var stdin = std.fs.File.stdin().reader(&stdin_buf);
|
||||||
lp.mcp.router.processRequests(mcp_server, &stdin.interface) catch |err| {
|
lp.mcp.router.processRequests(mcp_server, &stdin.interface) catch |err| {
|
||||||
|
|||||||
Reference in New Issue
Block a user