Why is it assumed that send may return with less than requested data transmitted on a blocking socket?

Solution 1:

The thing that is missing in above description is, in Unix, system calls might get interrupted with signals. That's exactly the reason blocking send(2) might return a short count.