mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
Merge pull request #1872 from lightpanda-io/wp/mrdimidium/fix-cdp-close
Gracefull close ws socket
This commit is contained in:
@@ -242,7 +242,10 @@ pub const Client = struct {
|
|||||||
fn stop(self: *Client) void {
|
fn stop(self: *Client) void {
|
||||||
switch (self.mode) {
|
switch (self.mode) {
|
||||||
.http => {},
|
.http => {},
|
||||||
.cdp => |*cdp| cdp.browser.env.terminate(),
|
.cdp => |*cdp| {
|
||||||
|
cdp.browser.env.terminate();
|
||||||
|
self.ws.sendClose();
|
||||||
|
},
|
||||||
}
|
}
|
||||||
self.ws.shutdown();
|
self.ws.shutdown();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -308,10 +308,13 @@ pub fn run(self: *Runtime) void {
|
|||||||
|
|
||||||
const socket = posix.accept(listener.socket, null, null, posix.SOCK.NONBLOCK) catch |err| {
|
const socket = posix.accept(listener.socket, null, null, posix.SOCK.NONBLOCK) catch |err| {
|
||||||
switch (err) {
|
switch (err) {
|
||||||
error.SocketNotListening, error.ConnectionAborted => {
|
error.SocketNotListening => {
|
||||||
self.pollfds[1] = .{ .fd = -1, .events = 0, .revents = 0 };
|
self.pollfds[1] = .{ .fd = -1, .events = 0, .revents = 0 };
|
||||||
self.listener = null;
|
self.listener = null;
|
||||||
},
|
},
|
||||||
|
error.ConnectionAborted => {
|
||||||
|
lp.log.warn(.app, "accept connection aborted", .{});
|
||||||
|
},
|
||||||
error.WouldBlock => {},
|
error.WouldBlock => {},
|
||||||
else => {
|
else => {
|
||||||
lp.log.err(.app, "accept", .{ .err = err });
|
lp.log.err(.app, "accept", .{ .err = err });
|
||||||
|
|||||||
@@ -308,6 +308,7 @@ pub fn Reader(comptime EXPECT_MASK: bool) type {
|
|||||||
pub const WsConnection = struct {
|
pub const WsConnection = struct {
|
||||||
// CLOSE, 2 length, code
|
// CLOSE, 2 length, code
|
||||||
const CLOSE_NORMAL = [_]u8{ 136, 2, 3, 232 }; // code: 1000
|
const CLOSE_NORMAL = [_]u8{ 136, 2, 3, 232 }; // code: 1000
|
||||||
|
const CLOSE_GOING_AWAY = [_]u8{ 136, 2, 3, 233 }; // code: 1001
|
||||||
const CLOSE_TOO_BIG = [_]u8{ 136, 2, 3, 241 }; // 1009
|
const CLOSE_TOO_BIG = [_]u8{ 136, 2, 3, 241 }; // 1009
|
||||||
const CLOSE_PROTOCOL_ERROR = [_]u8{ 136, 2, 3, 234 }; //code: 1002
|
const CLOSE_PROTOCOL_ERROR = [_]u8{ 136, 2, 3, 234 }; //code: 1002
|
||||||
// "private-use" close codes must be from 4000-49999
|
// "private-use" close codes must be from 4000-49999
|
||||||
@@ -583,6 +584,10 @@ pub const WsConnection = struct {
|
|||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn sendClose(self: *WsConnection) void {
|
||||||
|
self.send(&CLOSE_GOING_AWAY) catch {};
|
||||||
|
}
|
||||||
|
|
||||||
pub fn shutdown(self: *WsConnection) void {
|
pub fn shutdown(self: *WsConnection) void {
|
||||||
posix.shutdown(self.socket, .recv) catch {};
|
posix.shutdown(self.socket, .recv) catch {};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user