]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/ExternalNet/ExternalNet.cxx
Set SO_REUSEADDR on incoming UDP socket so other processes on the host
[flightgear.git] / src / FDM / ExternalNet / ExternalNet.cxx
index d8b184bf244f68c17d402f145b4c9a824454163e..a18b316f42c927ec78a2b9fc9166de26055621a9 100644 (file)
 #  include <netinet/in.h>      // htonl() ntohl()
 #endif
 
+#if defined( linux )
+#  include <sys/types.h>
+#  include <sys/socket.h>
+#endif
 
 // The function htond is defined this way due to the way some
 // processors and OSes treat floating point values.  Some will raise
@@ -370,6 +374,15 @@ FGExternalNet::FGExternalNet( double dt, string host, int dop, int dip, int cp )
     // disable blocking
     data_server.setBlocking( false );
 
+#if defined( linux )
+    // set SO_REUSEADDR flag
+    int socket = data_server.getHandle();
+    int one = 1;
+    int result;
+    result = ::setsockopt( socket, SOL_SOCKET, SO_REUSEADDR,
+                           &one, sizeof(one) );
+#endif
+
     // allowed to read from a broadcast addr
     // data_server.setBroadcast( true );