X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fsg_socket.cxx;h=2142548f891933c5be08ada15e7643cfa01e79dc;hb=dc09a50472890ac706d3c76d8af34cc3682ada0c;hp=b348ddf19f98cae3c862cce8e328044b4adbb4ec;hpb=761b7b93543ad2e8dfd307ee3679b3a2a7082ddc;p=simgear.git diff --git a/simgear/io/sg_socket.cxx b/simgear/io/sg_socket.cxx index b348ddf1..2142548f 100644 --- a/simgear/io/sg_socket.cxx +++ b/simgear/io/sg_socket.cxx @@ -3,7 +3,7 @@ // Written by Curtis Olson, started November 1999. // Modified by Bernie Bright , May 2002. // -// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -28,6 +28,8 @@ #include #endif +#include STL_IOSTREAM + #include #include "sg_socket.hxx" @@ -42,11 +44,12 @@ 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) { - netInit(); + netInit(NULL, NULL); // plib-1.4.2 compatible init = true; } @@ -218,7 +221,14 @@ SGSocket::read( char *buf, int length ) if (result > 0) { - result = sock.recv( buf, length ); + if (is_tcp && is_server) + { + result = client->recv( buf, length ); + } + else + { + result = sock.recv( buf, length ); + } if ( result != length ) { @@ -250,7 +260,7 @@ SGSocket::readline( char *buf, int length ) // read a chunk, keep in the save buffer until we have the // requested amount read - if (is_tcp) + if (is_tcp && is_server) { char *buf_ptr = save_buf + save_len; result = client->recv( buf_ptr, SG_IO_MAX_MSG_SIZE - save_len ); @@ -323,7 +333,7 @@ SGSocket::write( const char *buf, const int length ) if ( s->send( buf, length ) < 0 ) { - SG_LOG( SG_IO, SG_ALERT, "Error writing to socket: " << port ); + SG_LOG( SG_IO, SG_WARN, "Error writing to socket: " << port ); error_condition = true; } @@ -379,7 +389,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) {