From 238ad35f4e3b6516d4ba7611b540a0edeea71427 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Mon, 24 Nov 2008 19:43:16 +0000 Subject: [PATCH 1/1] libt2n: (tomj) documented code problems; have to find out if this is the source of the server memleak/client crash --- src/command_server.hxx | 1 + src/connection.cpp | 1 + src/socket_client.cpp | 1 + src/socket_handler.hxx | 1 + src/socket_server.cpp | 5 +++++ src/socket_wrapper.hxx | 3 +++ 6 files changed, 12 insertions(+), 0 deletions(-) diff --git a/src/command_server.hxx b/src/command_server.hxx index c839e78..04508b5 100644 --- a/src/command_server.hxx +++ b/src/command_server.hxx @@ -41,6 +41,7 @@ class command_server public: command_server(server& _s); + // TODO: No (virtual) destructor void handle(long long usec_timeout=-1, long long* usec_timeout_remaining=NULL); diff --git a/src/connection.cpp b/src/connection.cpp index c9283fe..cc543b2 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -32,6 +32,7 @@ namespace libt2n connection::~connection() { // we want the connection_closed callbacks to be called before + // FIXME: Functios is virtual close(); do_callbacks(connection_deleted); diff --git a/src/socket_client.cpp b/src/socket_client.cpp index 360e5f0..bd321fb 100644 --- a/src/socket_client.cpp +++ b/src/socket_client.cpp @@ -94,6 +94,7 @@ socket_client_connection::socket_client_connection(const std::string& _path, { lastErrorMsg=e.what(); LOGSTREAM(debug,"unix connect error: " << lastErrorMsg); + // FIXME: Calls virtual function close in constructor close(); } diff --git a/src/socket_handler.hxx b/src/socket_handler.hxx index 799913e..b91a505 100644 --- a/src/socket_handler.hxx +++ b/src/socket_handler.hxx @@ -48,6 +48,7 @@ class socket_handler long long write_timeout; socket_handler(int _sock, socket_type_value _socket_type); + // TODO: No destructor? void set_socket_options(int sock); diff --git a/src/socket_server.cpp b/src/socket_server.cpp index e2110bd..ad8bb84 100644 --- a/src/socket_server.cpp +++ b/src/socket_server.cpp @@ -67,7 +67,10 @@ socket_server::socket_server(int port, const std::string& ip) EXCEPTIONSTREAM(error,t2n_server_error,"failed listening on invalid ip " << ip); if (bind (sock, (struct sockaddr *) &sockaddr, sizeof (sockaddr)) < 0) + { + // FIXME: Calls virtual function socket_server::get_logstream() in constructor EXCEPTIONSTREAM(error,t2n_server_error,"error binding socket: " << strerror(errno)); + } start_listening(); } @@ -83,6 +86,8 @@ socket_server::socket_server(const std::string& path, mode_t filemode, const std { unix_path=path; + // TODO: Every EXCEPTIONSTREAM in here calls virtual function get_logstream() + /* Create the socket. */ sock = socket (PF_UNIX, SOCK_STREAM, 0); if (sock < 0) diff --git a/src/socket_wrapper.hxx b/src/socket_wrapper.hxx index 067931e..093a809 100644 --- a/src/socket_wrapper.hxx +++ b/src/socket_wrapper.hxx @@ -52,6 +52,9 @@ class BasicSocketWrapper : public ConnectionWrapper std::auto_ptr c; + // TODO: Mark object as non-copyable as it contains an auto_ptr. + // This will make sure nobody every tries to put this in a STL container + public: BasicSocketWrapper(int _port, const std::string& _server="127.0.0.1", long long _connect_timeout_usec=socket_client_connection::connect_timeout_usec_default, -- 1.7.1