проще?
void make_fd_blocking(bool non_block, int fd){
if(non_block){
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
}else
fcntl(fd, F_SETFL, (fcntl(fd, F_GETFL, 0) | O_NONBLOCK) - O_NONBLOCK);
}
А почему не & ~O_NONBLOCK? Можно, конечно, было бы и в одну строчку записать, но смотрелось бы более криво через умножение, тернарник или ленивые вычисления.
do{ int sent_current = SSL_write(ssl_fd, data.data() + sent, data.size() - sent); if(sent_current <= 0 && SSL_get_error(ssl_fd, sent_current) != SSL_ERROR_WANT_WRITE) break; sent += sent_current; }while(sent != data.size()); Для SSL_write() такое подойдет?
Обсуждают сегодня