X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fsg_socket.cxx;h=8dcbd6bebd8c764d29b75f674b030cfb7343e544;hb=6a7c2000027cd22eea603e936ddbad1a5bfc8b04;hp=b348ddf19f98cae3c862cce8e328044b4adbb4ec;hpb=761b7b93543ad2e8dfd307ee3679b3a2a7082ddc;p=simgear.git diff --git a/simgear/io/sg_socket.cxx b/simgear/io/sg_socket.cxx index b348ddf1..8dcbd6be 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 @@ -17,10 +17,13 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ +#ifdef HAVE_CONFIG_H +# include +#endif #include @@ -28,6 +31,8 @@ #include #endif +#include + #include #include "sg_socket.hxx" @@ -42,11 +47,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 +224,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 +263,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 +336,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 +392,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) {