]> git.mxchange.org Git - simgear.git/commitdiff
Melchior FRANZ:
authorehofman <ehofman>
Sun, 14 Dec 2003 14:45:29 +0000 (14:45 +0000)
committerehofman <ehofman>
Sun, 14 Dec 2003 14:45:29 +0000 (14:45 +0000)
There's another problem with sg_socket.cxx: the timeout value is
hardcoded as 0. This is appropriate for servers as they continuously
poll the socket and never want to wait for clients. But clients
*do* want to wait a few seconds for a server response.

simgear/io/sg_socket.cxx
simgear/io/sg_socket.hxx

index 4012d71ae80db221b22ad80de884c469a8570db2..7407f6ec99fb2e2413af2cdea3cea4cb9d9a9538 100644 (file)
@@ -42,7 +42,8 @@ SGSocket::SGSocket( const string& host, const string& port_,
     client(0),
     is_tcp(false),
     is_server(false),
-    first_read(false)
+    first_read(false),
+    timeout(0)
 {
     if (!init)
     {
@@ -386,7 +387,7 @@ SGSocket::poll()
     netSocket* writers[1];
     writers[0] = 0;
 
-    int result = netSocket::select( readers, writers, 0 );
+    int result = netSocket::select( readers, writers, timeout );
 
     if (result > 0 && is_server && client == 0)
     {
index 4e1d9e0513e683025692ffc019c3cb7b3519c35e..704e67d3e5bd1e94e0a45e1e7addb3c70d643a81 100644 (file)
@@ -64,6 +64,7 @@ private:
     bool is_tcp;
     bool is_server;
     bool first_read;
+    int timeout;
 
     static bool init;
 
@@ -156,6 +157,9 @@ public:
      */
     bool nonblock();
 
+    // set timeout (default: 0)
+    inline void set_timeout(int i) { timeout = i; }
+
     /** @return the remote host name */
     inline string get_hostname() const { return hostname; }