X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fsocket_server.cpp;h=d6ca43960e569ea8ae1a3304a488674249e6d90b;hp=35bb314d2c7ae7e28b906231c07038eb6cfa4aa4;hb=6f59dcf596103d0bc69be841627cd9926faa4139;hpb=8fccaecc28ed1ad0747e516a6f0cb1d350406798 diff --git a/src/socket_server.cpp b/src/socket_server.cpp index 35bb314..d6ca439 100644 --- a/src/socket_server.cpp +++ b/src/socket_server.cpp @@ -28,6 +28,7 @@ on this file might be covered by the GNU General Public License. #include #include #include +#include #include #include #include @@ -164,6 +165,7 @@ void socket_server::start_listening() /* clear & insert server sock into the fd_tab to prepare select */ FD_ZERO(&connection_set); FD_SET (sock, &connection_set); + sockets_set.insert(sock); } /// handle a new connection from a client @@ -189,6 +191,7 @@ void socket_server::new_connection() } FD_SET (newsock, &connection_set); + sockets_set.insert(newsock); socket_server_connection *nc=new socket_server_connection(newsock, get_type(), get_default_timeout()); nc->set_socket_options(newsock); @@ -286,6 +289,7 @@ bool socket_server::fill_connection_buffers() void socket_server::remove_connection_socket(int sock) { FD_CLR(sock, &connection_set); + sockets_set.erase(sock); } /** @@ -320,4 +324,11 @@ void socket_server_connection::close() } } +bool socket_server_connection::fill_buffer(long long usec_timeout,long long* usec_timeout_remaining) +{ + bool new_data = socket_handler::fill_buffer(buffer,usec_timeout,usec_timeout_remaining); + if (new_data) + reset_timeout(); + return new_data; +} }