From 33768fa2824ee6d00822b302e5304a80179d788d Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Tue, 9 Jun 2009 05:51:10 +0000 Subject: [PATCH] fixed deadlock in http_tracker_connection --- include/libtorrent/tracker_manager.hpp | 1 + src/http_tracker_connection.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/libtorrent/tracker_manager.hpp b/include/libtorrent/tracker_manager.hpp index c8155b7bb..36fd52b98 100644 --- a/include/libtorrent/tracker_manager.hpp +++ b/include/libtorrent/tracker_manager.hpp @@ -196,6 +196,7 @@ namespace libtorrent tracker_request const& tracker_req() const { return m_req; } + void fail_disp(int code, std::string const& msg) { fail(code, msg.c_str()); } void fail(int code, char const* msg); void fail_timeout(); virtual void start() = 0; diff --git a/src/http_tracker_connection.cpp b/src/http_tracker_connection.cpp index 80adecab4..ddcdf23c7 100644 --- a/src/http_tracker_connection.cpp +++ b/src/http_tracker_connection.cpp @@ -95,8 +95,8 @@ namespace libtorrent std::size_t pos = url.find("announce"); if (pos == std::string::npos) { - fail(-1, ("scrape is not available on url: '" - + tracker_req().url +"'").c_str()); + m_ios.post(boost::bind(&http_tracker_connection::fail_disp, self() + , -1, "scrape is not available on url: '" + tracker_req().url +"'")); return; } url.replace(pos, 8, "scrape");