| ... | @@ -312,8 +312,8 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) void { | ... | @@ -312,8 +312,8 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) void { |
| 312 | | 312 | |
| 313 | fn worker(pool: *Pool) void { | 313 | fn worker(pool: *Pool) void { |
| 314 | var trash_buf: [1]u8 = undefined; | 314 | var trash_buf: [1]u8 = undefined; |
| 315 | var connection: ?std.net.Stream = null; | 315 | var connection: ?std.posix.fd_t = null; |
| 316 | defer if (connection) |stream| stream.close(); | 316 | defer if (connection) |fd| std.posix.close(fd); |
| 317 | | 317 | |
| 318 | pool.mutex.lock(); | 318 | pool.mutex.lock(); |
| 319 | defer pool.mutex.unlock(); | 319 | defer pool.mutex.unlock(); |
| ... | @@ -326,11 +326,26 @@ fn worker(pool: *Pool) void { | ... | @@ -326,11 +326,26 @@ fn worker(pool: *Pool) void { |
| 326 | | 326 | |
| 327 | if (connection == null) switch (pool.job_server_options) { | 327 | if (connection == null) switch (pool.job_server_options) { |
| 328 | .abstain => {}, | 328 | .abstain => {}, |
| 329 | .connect, .host => |addr| { | 329 | .connect, .host => |addr| lock: { |
| 330 | if (std.net.tcpConnectToAddress(addr)) |stream| { | 330 | const sockfd = std.posix.socket( |
| 331 | connection = stream; | 331 | std.posix.AF.UNIX, |
| 332 | _ = stream.readAll(&trash_buf) catch 1; | 332 | std.posix.SOCK.STREAM | std.posix.SOCK.CLOEXEC, |
| 333 | } else |_| {} | 333 | 0, |
| | 334 | ) catch |err| { |
| | 335 | std.log.debug("failed to make socket: {s}", .{@errorName(err)}); |
| | 336 | break :lock; |
| | 337 | }; |
| | 338 | connection = sockfd; |
| | 339 | |
| | 340 | std.posix.connect(sockfd, &addr.any, addr.getOsSockLen()) catch |err| { |
| | 341 | std.log.debug("failed to connect: {s}", .{@errorName(err)}); |
| | 342 | break :lock; |
| | 343 | }; |
| | 344 | |
| | 345 | _ = std.posix.read(sockfd, &trash_buf) catch |err| { |
| | 346 | std.log.debug("failed to read: {s}", .{@errorName(err)}); |
| | 347 | break :lock; |
| | 348 | }; |
| 334 | }, | 349 | }, |
| 335 | }; | 350 | }; |
| 336 | | 351 | |
| ... | @@ -342,8 +357,8 @@ fn worker(pool: *Pool) void { | ... | @@ -342,8 +357,8 @@ fn worker(pool: *Pool) void { |
| 342 | if (pool.end_flag) | 357 | if (pool.end_flag) |
| 343 | break; | 358 | break; |
| 344 | | 359 | |
| 345 | if (connection) |stream| { | 360 | if (connection) |fd| { |
| 346 | stream.close(); | 361 | std.posix.close(fd); |
| 347 | connection = null; | 362 | connection = null; |
| 348 | } | 363 | } |
| 349 | | 364 | |