These functions return -1 on error and the input length on success. Under what conditions may they return a value less than the length and greater than or equal to 0 for an UDP socket on Linux?
This StackOverflow question is similar but in the context of a non-Linux RTOS. The answers assert it cannot happen, and the OS vendor contradicts them. This StackOverflow question is similar but the accepted answer only discusses receipt. Beej's guide asserts that it may happen. libuv asserts that it cannot. POSIX does not seem to forbid it.
Therefore, I am curious what circumstances, if any, lead to a "short write" return value for UDP sockets on Linux? Is there an internet RFC or clause in POSIX which forbids it? Can this occur, for example, if a UDP datagram is fragmented (sent in multiple IP packets)?