added performance alert for address-in-use errors

This commit is contained in:
Arvid Norberg 2012-03-03 02:29:37 +00:00
parent 89554179f6
commit 5a8037dba2
4 changed files with 19 additions and 3 deletions

View File

@ -6969,7 +6969,8 @@ upload or download rate performance.
download_limit_too_low,
send_buffer_watermark_too_low,
too_many_optimistic_unchoke_slots,
too_high_disk_queue_limit
too_high_disk_queue_limit,
too_few_outgoing_ports
};
performance_warning_t warning_code;
@ -7039,6 +7040,12 @@ too_high_disk_queue_limit
portions of the cache before allowing peers to download any more, onto the disk write
queue. Either lower ``max_queued_disk_bytes`` or increase ``cache_size``.
too_few_outgoing_ports
This is generated if outgoing peer connections are failing because of *address in use*
errors, indicating that ``session_settings::outgoing_ports`` is set and is too small of
a range. Consider not using the ``outgoing_ports`` setting at all, or widen the range to
include more ports.
state_changed_alert
-------------------

View File

@ -225,7 +225,7 @@ namespace libtorrent
too_many_optimistic_unchoke_slots,
bittyrant_with_no_uplimit,
too_high_disk_queue_limit,
too_few_outgoing_ports,
num_warnings

View File

@ -119,7 +119,8 @@ namespace libtorrent {
"send buffer watermark too low (upload rate will suffer)",
"too many optimistic unchoke slots",
"using bittyrant unchoker with no upload rate limit set",
"the disk queue limit is too high compared to the cache size. The disk queue eats into the cache size"
"the disk queue limit is too high compared to the cache size. The disk queue eats into the cache size",
"too few ports allowed for outgoing connections"
};
return torrent_alert::message() + ": performance warning: "

View File

@ -3603,6 +3603,14 @@ namespace libtorrent
torrent_handle handle;
if (t) handle = t->get_handle();
if (ec == error::address_in_use
&& m_ses.m_settings.outgoing_ports.first != 0)
{
if (m_ses.m_alerts.should_post<performance_alert>())
m_ses.m_alerts.post_alert(performance_alert(
handle, performance_alert::too_few_outgoing_ports));
}
if (ec)
{
if ((error > 1 || ec.category() == socks_category)