On Fri Jul 14 20:11:50 2023 +0000, Zebediah Figura wrote:
Some of the behaviour seems specific to sockets, but it's not clear that this part should be. It seems quite reasonable that it might apply to other object types as well. This is why I've been mentioning trying to reproduce the same cancellation with named pipes or something.
Yes, it might be interesting, but do you think it is strictly related to this patchset? Reproducing that for other objects types and fixing those is a lot more than this patchset was intended to do. Unless you think that if e. g., named pipes needs the same this part (which is only a few lines in the socket specific part) this should be done some way entirely different?
Just e. g., there are also other thing which tests here uncovered, that async cancelation with completion (and some other conditions) doesn't update IO status until removing completion. Meaning if we do that without removing completion when Windows doesn't we might be accessing the already free memory. We can't fix everything at once.