> Why is a signal lost in the scenario you described ? Because the return can only indicate a signal/error *or* a batch of messages but not both and the semantics of recvmsg() means that both could occur.
Don't just consider signals, consider any -1/errno return from recvmsg() such as -1/EAGAIN or -1/ENOBUFS or -1/EFAULT. If one emulates recvmmsg() via multiple calls to recvmsg() and the emulation receives 'n' messages via recvmsg() then gets a -1/EFAULT return on message 'n'+1 then what does it return to the caller? If it returns 'n' messages then the EFAULT is lost. If it returns -1/EFAULT then the 'n' messages are lost. Mark. _______________________________________________ freebsd-net@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"