X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fsocket_client.cpp;h=360e5f009f59cd359c18832ca7102abdf980e079;hp=a26b004cfacd5e33f0f8f8f28413738cab17f7d7;hb=039e52da9b40d0e729360ff0a953dfbddf975b8a;hpb=1bdd13c030b192cd3087eee64a581a0d43766d16 diff --git a/src/socket_client.cpp b/src/socket_client.cpp index a26b004..360e5f0 100644 --- a/src/socket_client.cpp +++ b/src/socket_client.cpp @@ -175,6 +175,17 @@ void socket_client_connection::connect_with_timeout(struct sockaddr *sock_addr,u { set_socket_options(sock); + /* non-blocking mode */ + int flflags; + flflags=fcntl(sock,F_GETFL,0); + if (flflags < 0) + EXCEPTIONSTREAM(error,t2n_communication_error,"fcntl error on socket: " << strerror(errno)); + + flflags &= (O_NONBLOCK ^ 0xFFFF); + if (fcntl(sock,F_SETFL,flflags) < 0) + EXCEPTIONSTREAM(error,t2n_communication_error,"fcntl error on socket: " << strerror(errno)); + + LOGSTREAM(debug,"connect_with_timeout()"); int ret=::connect(sock,sock_addr, sockaddr_size);