| ... | ... | @@ -2400,15 +2400,25 @@ test "accept/connect/recv/cancel" { |
| 2400 | 2400 | try testing.expectEqual(@as(u64, 0x99999999), sqe_cancel.user_data); |
| 2401 | 2401 | try testing.expectEqual(@as(u32, 1), try ring.submit()); |
| 2402 | 2402 | |
| 2403 | | const cqe_recv = try ring.copy_cqe(); |
| 2403 | var cqe_recv = try ring.copy_cqe(); |
| 2404 | 2404 | if (cqe_recv.err() == .INVAL) return error.SkipZigTest; |
| 2405 | var cqe_cancel = try ring.copy_cqe(); |
| 2406 | if (cqe_cancel.err() == .INVAL) return error.SkipZigTest; |
| 2407 | |
| 2408 | // The recv/cancel CQEs may arrive in any order, the recv CQE will sometimes come first: |
| 2409 | if (cqe_recv.user_data == 0x99999999 and cqe_cancel.user_data == 0xffffffff) { |
| 2410 | const a = cqe_recv; |
| 2411 | const b = cqe_cancel; |
| 2412 | cqe_recv = b; |
| 2413 | cqe_cancel = a; |
| 2414 | } |
| 2415 | |
| 2405 | 2416 | try testing.expectEqual(linux.io_uring_cqe{ |
| 2406 | 2417 | .user_data = 0xffffffff, |
| 2407 | 2418 | .res = -@as(i32, @enumToInt(linux.E.CANCELED)), |
| 2408 | 2419 | .flags = 0, |
| 2409 | 2420 | }, cqe_recv); |
| 2410 | 2421 | |
| 2411 | | const cqe_cancel = try ring.copy_cqe(); |
| 2412 | 2422 | try testing.expectEqual(linux.io_uring_cqe{ |
| 2413 | 2423 | .user_data = 0x99999999, |
| 2414 | 2424 | .res = 0, |