if (poll(fd_poll, 1, initial_character_timeout) < 1) return 0; do { read(fd_poll->fd, bytes + i, 1); i++; } while ((i < size) && poll(fd_poll, 1, intercharacter_timeout) > 0);