improved logging, fixed option to allow multiple connections from the same IP

This commit is contained in:
Arvid Norberg
2006-11-15 21:39:58 +00:00
parent 51e3261dd0
commit 01f1d01d58
13 changed files with 183 additions and 34 deletions

View File

@@ -461,6 +461,12 @@ namespace libtorrent { namespace detail
}
#endif
struct seed_random_generator
{
seed_random_generator()
{ std::srand((unsigned int)std::time(0)); }
};
session_impl::session_impl(
std::pair<int, int> listen_port_range
, fingerprint const& cl_fprint
@@ -482,14 +488,14 @@ namespace libtorrent { namespace detail
{
#if defined(TORRENT_VERBOSE_LOGGING) || defined(TORRENT_LOGGING)
m_logger = create_log("main_session", false);
m_logger = create_log("main_session", listen_port(), false);
using boost::posix_time::second_clock;
using boost::posix_time::to_simple_string;
(*m_logger) << to_simple_string(second_clock::universal_time()) << "\n";
#endif
// ---- generate a peer id ----
std::srand((unsigned int)std::time(0));
static seed_random_generator seeder;
m_key = rand() + (rand() << 15) + (rand() << 30);
std::string print = cl_fprint.to_string();
@@ -643,7 +649,7 @@ namespace libtorrent { namespace detail
if (m_alerts.should_post(alert::fatal))
{
m_alerts.post_alert(listen_failed_alert(
std::string("failed to open listen port") + e.what()));
std::string("failed to open listen port: ") + e.what()));
}
}
@@ -1068,7 +1074,13 @@ namespace libtorrent { namespace detail
req.listen_port = m_listen_interface.port();
req.key = m_key;
std::string login = i->second->tracker_login();
#if defined(TORRENT_VERBOSE_LOGGING) || defined(TORRENT_LOGGING)
boost::shared_ptr<tracker_logger> tl(new tracker_logger(*this));
m_tracker_loggers.push_back(tl);
m_tracker_manager.queue_request(m_selector, req, login, tl);
#else
m_tracker_manager.queue_request(m_selector, req, login);
#endif
}
}
@@ -1132,10 +1144,11 @@ namespace libtorrent { namespace detail
}
#if defined(TORRENT_VERBOSE_LOGGING) || defined(TORRENT_LOGGING)
boost::shared_ptr<logger> session_impl::create_log(std::string const& name, bool append)
boost::shared_ptr<logger> session_impl::create_log(std::string const& name
, int instance, bool append)
{
// current options are file_logger, cout_logger and null_logger
return boost::shared_ptr<logger>(new logger(name + ".log", append));
return boost::shared_ptr<logger>(new logger(name + ".log", instance, append));
}
#endif
@@ -1344,8 +1357,16 @@ namespace libtorrent { namespace detail
assert(req.event == tracker_request::stopped);
req.listen_port = m_listen_interface.port();
req.key = m_key;
#if defined(TORRENT_VERBOSE_LOGGING) || defined(TORRENT_LOGGING)
boost::shared_ptr<tracker_logger> tl(new tracker_logger(*this));
m_tracker_loggers.push_back(tl);
m_tracker_manager.queue_request(m_selector, req
, t.tracker_login(), tl);
#else
m_tracker_manager.queue_request(m_selector, req
, t.tracker_login());
#endif
if (m_alerts.should_post(alert::info))
{
@@ -1413,6 +1434,14 @@ namespace libtorrent { namespace detail
m_listen_interface = new_interface;
open_listen_port();
#if defined(TORRENT_VERBOSE_LOGGING) || defined(TORRENT_LOGGING)
m_logger = create_log("main_session", listen_port(), false);
using boost::posix_time::second_clock;
using boost::posix_time::to_simple_string;
(*m_logger) << to_simple_string(second_clock::universal_time()) << "\n";
#endif
return m_listen_socket;
}