libt2n: (gerd) set additional non-blocking options, not really needed but a safety...
[libt2n] / src / socket_client.cpp
index a26b004..360e5f0 100644 (file)
@@ -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);