Hello! The behaviour of recvmmsg() with MSG_PEEK flag confuses me. I'd expect it to peek multiple messages at once, but it seems to peek only the first one, filling each of the provided struct msghdr with a copy of the first message. I do not see if it is documented anywhere, is it a bug or intended design? What I want to achieve is to first peek into the socket, get the size of each message, then allocate appropriate buffers and read the messages with the second recvmmsg() call. This seems to be a relatively common pattern for reading single messages via recvmsg(), and I naively expected it to work with recvmmsg() too. -- Regards, Alexander Babayants.