read_socket() is always called when in blocking mode...

EAGAIN is returned , if in blocking mode, when the TCP timeout is reached,
which means that read_socket() would loop forever if no data is received (while expected)