X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FExternalNet%2FExternalNet.cxx;h=a18b316f42c927ec78a2b9fc9166de26055621a9;hb=7805202fc67bf73c8d73667c723e16d49b77df07;hp=4c288ec26a75508eaffb561ee3ddbf96b4d4f536;hpb=dc5397b33b80882cb6296c0efbaf20e7d198ddc9;p=flightgear.git diff --git a/src/FDM/ExternalNet/ExternalNet.cxx b/src/FDM/ExternalNet/ExternalNet.cxx index 4c288ec26..a18b316f4 100644 --- a/src/FDM/ExternalNet/ExternalNet.cxx +++ b/src/FDM/ExternalNet/ExternalNet.cxx @@ -35,6 +35,10 @@ # include // htonl() ntohl() #endif +#if defined( linux ) +# include +# include +#endif // The function htond is defined this way due to the way some // processors and OSes treat floating point values. Some will raise @@ -108,8 +112,12 @@ static void global2net( FGNetCtrls *net ) { net->num_wheels = FGNetCtrls::FG_MAX_WHEELS; for ( i = 0; i < FGNetCtrls::FG_MAX_WHEELS; ++i ) { if ( node->getChild("brakes", i) != 0 ) { - net->brake[i] - = node->getChild("brakes", i)->getDoubleValue(); + if ( node->getChild("parking-brake")->getDoubleValue() > 0.0 ) { + net->brake[i] = 1.0; + } else { + net->brake[i] + = node->getChild("brakes", i)->getDoubleValue(); + } } else { net->brake[i] = 0.0; } @@ -366,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 );