From 02afc8b64055d1d361e1c9a6384a308617bf8144 Mon Sep 17 00:00:00 2001 From: Alden Torres Date: Wed, 12 Aug 2015 20:55:07 -0400 Subject: [PATCH] Added utp-stats bjam option to enable utp stream log (utp.log file). --- Jamfile | 3 +++ include/libtorrent/utp_stream.hpp | 5 +++++ src/utp_stream.cpp | 32 +++++++++++++++++++++++++++---- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/Jamfile b/Jamfile index 1dbd74330..ee1a7f276 100644 --- a/Jamfile +++ b/Jamfile @@ -472,6 +472,9 @@ feature.compose full : TORRENT_EXPENSIVE_INVARIANT_CHE feature disk-stats : off on : composite propagated link-incompatible ; feature.compose on : TORRENT_DISK_STATS ; +feature utp-stats : off on : composite propagated link-incompatible ; +feature.compose on : TORRENT_UTP_LOG TORRENT_VERBOSE_UTP_LOG ; + feature simulate-slow-read : off on : composite propagated ; feature.compose on : TORRENT_SIMULATE_SLOW_READ ; diff --git a/include/libtorrent/utp_stream.hpp b/include/libtorrent/utp_stream.hpp index fd4a4cb3d..f9473af71 100644 --- a/include/libtorrent/utp_stream.hpp +++ b/include/libtorrent/utp_stream.hpp @@ -468,6 +468,11 @@ public: issue_write(); } +#ifdef TORRENT_UTP_LOG + static bool utp_stream_log(); + static void utp_stream_log(bool enable); +#endif + private: // explicitly disallow assignment, to silence msvc warning utp_stream& operator=(utp_stream const&); diff --git a/src/utp_stream.cpp b/src/utp_stream.cpp index fcc4aea4f..f5b444a39 100644 --- a/src/utp_stream.cpp +++ b/src/utp_stream.cpp @@ -44,9 +44,6 @@ POSSIBILITY OF SUCH DAMAGE. #include #include -#define TORRENT_UTP_LOG 0 -#define TORRENT_VERBOSE_UTP_LOG 0 - // the behavior of the sequence numbers as implemented by uTorrent is not // particularly regular. This switch indicates the odd parts. #define TORRENT_UT_SEQ 1 @@ -70,7 +67,7 @@ static struct utp_logger utp_logger() : utp_log_file(0) { - utp_log_file = fopen("utp.log", "w+"); + utp_log_file = NULL; } ~utp_logger() { @@ -80,6 +77,8 @@ static struct utp_logger void utp_log(char const* fmt, ...) { + if (log_file_holder.utp_log_file == NULL) return; + mutex::scoped_lock lock(log_file_holder.utp_log_mutex); static time_point start = clock_type::now(); fprintf(log_file_holder.utp_log_file, "[%012" PRId64 "] ", total_microseconds(clock_type::now() - start)); @@ -1172,6 +1171,31 @@ void utp_stream::do_connect(tcp::endpoint const& ep) m_impl->send_syn(); } +#ifdef TORRENT_UTP_LOG + bool utp_stream::utp_stream_log() { + return log_file_holder.utp_log_file != NULL; + } + + void utp_stream::utp_stream_log(bool enable) { + if (enable) + { + if (log_file_holder.utp_log_file == NULL) + { + log_file_holder.utp_log_file = fopen("utp.log", "w+"); + } + } + else + { + if (log_file_holder.utp_log_file != NULL) + { + FILE* f = log_file_holder.utp_log_file; + log_file_holder.utp_log_file = NULL; + fclose(f); + } + } + } +#endif + // =========== utp_socket_impl ============ utp_socket_impl::~utp_socket_impl()