| ... | ... | @@ -312,8 +312,8 @@ pub fn spawn(pool: *Pool, comptime func: anytype, args: anytype) void { |
| 312 | 312 | |
| 313 | 313 | fn worker(pool: *Pool) void { |
| 314 | 314 | var trash_buf: [1]u8 = undefined; |
| 315 | | var connection: ?std.net.Stream = null; |
| 316 | | defer if (connection) |stream| stream.close(); |
| 315 | var connection: ?std.posix.fd_t = null; |
| 316 | defer if (connection) |fd| std.posix.close(fd); |
| 317 | 317 | |
| 318 | 318 | pool.mutex.lock(); |
| 319 | 319 | defer pool.mutex.unlock(); |
| ... | ... | @@ -326,11 +326,26 @@ fn worker(pool: *Pool) void { |
| 326 | 326 | |
| 327 | 327 | if (connection == null) switch (pool.job_server_options) { |
| 328 | 328 | .abstain => {}, |
| 329 | | .connect, .host => |addr| { |
| 330 | | if (std.net.tcpConnectToAddress(addr)) |stream| { |
| 331 | | connection = stream; |
| 332 | | _ = stream.readAll(&trash_buf) catch 1; |
| 333 | | } else |_| {} |
| 329 | .connect, .host => |addr| lock: { |
| 330 | const sockfd = std.posix.socket( |
| 331 | std.posix.AF.UNIX, |
| 332 | std.posix.SOCK.STREAM | std.posix.SOCK.CLOEXEC, |
| 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 | 357 | if (pool.end_flag) |
| 343 | 358 | break; |
| 344 | 359 | |
| 345 | | if (connection) |stream| { |
| 346 | | stream.close(); |
| 360 | if (connection) |fd| { |
| 361 | std.posix.close(fd); |
| 347 | 362 | connection = null; |
| 348 | 363 | } |
| 349 | 364 | |