TLSRecv clarifications

Here is a round of clean-ups triggered by @ediosyncratic's comments about whether SSL_read() can return partial reads.

My verdict is that yes this is legal (and as a result it is legal for TLSRecv() as well), and this will be the case if the opposite side did an SSL_write() of smaller size than what we are reading, or smaller than TLS record size (16KB).

But given that we are using SSL_MODE_AUTO_RETRY and that our SendTransaction() never sends more than 4KB of payload (which is smaller than the TLS record size), ReceiveTransaction() should never get partial transaction payload.
This is confusing.  It fails to say that a positive return is ... what ?  I guess number of bytes received ?
... and what am I to make of it returning 0 on success ?  Should I interpret it as success, with 0 bytes returned ?
What can't I count on about this ?