int n_read()

in src/tcpstream.c [12:33]


int n_read(int fd, char *buffer, size_t total)
{
	register int rtn;
	register size_t left = total;

	while (left > 0) {
		rtn = recv(fd, buffer, left, 0);
		if (rtn < 0) {
			if (errno == EINTR || errno == EAGAIN)
				break;
			else
				return ERROR_NETWORK_READ;
		}
		else if (rtn == 0)
			break;

		left -= rtn;
		buffer += rtn;
	}

	return total - left;
}