I'm witnessing an odd behavior whereby io_uring_prep_send SQEs get completed with res = 0, even if the connection is still alive and using send directly works just fine. This is on 6.10.3 and sending messages down a blocking TCP socket, with a polling uring.
I think this is due to MSG_DONTWAIT being passed to sock_sendmsg. MSG_DONTWAIT is set when IO_URING_F_NONBLOCK is set, which I think is the case for polling queues. So I'd imagine that when the socket buffer is full you'll just get 0.
Is this expected? I'd expect send on blocking sockets to block until space is present.
I'm witnessing an odd behavior whereby
io_uring_prep_sendSQEs get completed withres = 0, even if the connection is still alive and usingsenddirectly works just fine. This is on 6.10.3 and sending messages down a blocking TCP socket, with a polling uring.I think this is due to
MSG_DONTWAITbeing passed tosock_sendmsg.MSG_DONTWAITis set whenIO_URING_F_NONBLOCKis set, which I think is the case for polling queues. So I'd imagine that when the socket buffer is full you'll just get 0.Is this expected? I'd expect
sendon blocking sockets to block until space is present.