libt2n: (tomj) documented code problems; have to find out if this is the source of...
[libt2n] / src / socket_client.cpp
index a26b004..bd321fb 100644 (file)
@@ -94,6 +94,7 @@ socket_client_connection::socket_client_connection(const std::string& _path,
     {
         lastErrorMsg=e.what();
         LOGSTREAM(debug,"unix connect error: " << lastErrorMsg);
+        // FIXME: Calls virtual function close in constructor
         close();
     }
 
@@ -175,6 +176,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);