error_code fix. added is_error_code_enum template specialization and using the abbreviated syntax to build error_codes

This commit is contained in:
Arvid Norberg
2009-11-29 07:06:38 +00:00
parent 6070c59b46
commit 1f5859d31f
27 changed files with 249 additions and 238 deletions

View File

@@ -393,7 +393,7 @@ namespace libtorrent
m_dh_key_exchange.reset(new (std::nothrow) dh_key_exchange);
if (!m_dh_key_exchange || !m_dh_key_exchange->good())
{
disconnect(error_code(errors::no_memory, libtorrent_category));
disconnect(errors::no_memory);
return;
}
@@ -406,7 +406,7 @@ namespace libtorrent
buffer::interval send_buf = allocate_send_buffer(dh_key_len + pad_size);
if (send_buf.begin == 0)
{
disconnect(error_code(errors::no_memory, libtorrent_category));
disconnect(errors::no_memory);
return;
}
@@ -624,7 +624,7 @@ namespace libtorrent
m_RC4_handler.reset(new (std::nothrow) RC4_handler(local_key, remote_key));
if (!m_RC4_handler)
{
disconnect(error_code(errors::no_memory, libtorrent_category));
disconnect(errors::no_memory);
return;
}
@@ -887,7 +887,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 1)
{
disconnect(error_code(errors::invalid_choke, libtorrent_category), 2);
disconnect(errors::invalid_choke, 2);
return;
}
if (!packet_finished()) return;
@@ -937,7 +937,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 1)
{
disconnect(error_code(errors::invalid_unchoke, libtorrent_category), 2);
disconnect(errors::invalid_unchoke, 2);
return;
}
if (!packet_finished()) return;
@@ -957,7 +957,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 1)
{
disconnect(error_code(errors::invalid_interested, libtorrent_category), 2);
disconnect(errors::invalid_interested, 2);
return;
}
if (!packet_finished()) return;
@@ -977,7 +977,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 1)
{
disconnect(error_code(errors::invalid_not_interested, libtorrent_category), 2);
disconnect(errors::invalid_not_interested, 2);
return;
}
if (!packet_finished()) return;
@@ -997,7 +997,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 5)
{
disconnect(error_code(errors::invalid_have, libtorrent_category), 2);
disconnect(errors::invalid_have, 2);
return;
}
if (!packet_finished()) return;
@@ -1029,7 +1029,7 @@ namespace libtorrent
if (t->valid_metadata()
&& packet_size() - 1 != (t->torrent_file().num_pieces() + 7) / 8)
{
disconnect(error_code(errors::invalid_bitfield_size, libtorrent_category), 2);
disconnect(errors::invalid_bitfield_size, 2);
return;
}
@@ -1056,7 +1056,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 13)
{
disconnect(error_code(errors::invalid_request, libtorrent_category), 2);
disconnect(errors::invalid_request, 2);
return;
}
if (!packet_finished()) return;
@@ -1111,7 +1111,7 @@ namespace libtorrent
if (list_size > packet_size() - 13)
{
disconnect(error_code(errors::invalid_hash_list, libtorrent_category), 2);
disconnect(errors::invalid_hash_list, 2);
return;
}
@@ -1209,7 +1209,7 @@ namespace libtorrent
lazy_entry hash_list;
if (lazy_bdecode(recv_buffer.begin + 13, recv_buffer.end + 13 + list_size, hash_list) != 0)
{
disconnect(error_code(errors::invalid_hash_piece, libtorrent_category), 2);
disconnect(errors::invalid_hash_piece, 2);
return;
}
@@ -1217,7 +1217,7 @@ namespace libtorrent
// [ [node-index, hash], [node-index, hash], ... ]
if (hash_list.type() != lazy_entry::list_t)
{
disconnect(error_code(errors::invalid_hash_list, libtorrent_category), 2);
disconnect(errors::invalid_hash_list, 2);
return;
}
@@ -1243,7 +1243,7 @@ namespace libtorrent
#endif
if (!nodes.empty() && !t->add_merkle_nodes(nodes, p.piece))
{
disconnect(error_code(errors::invalid_hash_piece, libtorrent_category), 2);
disconnect(errors::invalid_hash_piece, 2);
return;
}
}
@@ -1264,7 +1264,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() != 13)
{
disconnect(error_code(errors::invalid_cancel, libtorrent_category), 2);
disconnect(errors::invalid_cancel, 2);
return;
}
if (!packet_finished()) return;
@@ -1292,12 +1292,12 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (!m_supports_dht_port)
{
disconnect(error_code(errors::invalid_dht_port, libtorrent_category), 2);
disconnect(errors::invalid_dht_port, 2);
return;
}
if (packet_size() != 3)
{
disconnect(error_code(errors::invalid_dht_port, libtorrent_category), 2);
disconnect(errors::invalid_dht_port, 2);
return;
}
if (!packet_finished()) return;
@@ -1317,7 +1317,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (!m_supports_fast)
{
disconnect(error_code(errors::invalid_suggest, libtorrent_category), 2);
disconnect(errors::invalid_suggest, 2);
return;
}
@@ -1337,7 +1337,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (!m_supports_fast)
{
disconnect(error_code(errors::invalid_have_all, libtorrent_category), 2);
disconnect(errors::invalid_have_all, 2);
return;
}
incoming_have_all();
@@ -1350,7 +1350,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (!m_supports_fast)
{
disconnect(error_code(errors::invalid_have_none, libtorrent_category), 2);
disconnect(errors::invalid_have_none, 2);
return;
}
incoming_have_none();
@@ -1363,7 +1363,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (!m_supports_fast)
{
disconnect(error_code(errors::invalid_reject, libtorrent_category), 2);
disconnect(errors::invalid_reject, 2);
return;
}
@@ -1387,7 +1387,7 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (!m_supports_fast)
{
disconnect(error_code(errors::invalid_allow_fast, libtorrent_category), 2);
disconnect(errors::invalid_allow_fast, 2);
return;
}
@@ -1411,13 +1411,13 @@ namespace libtorrent
m_statistics.received_bytes(0, received);
if (packet_size() < 2)
{
disconnect(error_code(errors::invalid_extended, libtorrent_category), 2);
disconnect(errors::invalid_extended, 2);
return;
}
if (associated_torrent().expired())
{
disconnect(error_code(errors::invalid_extended, libtorrent_category), 2);
disconnect(errors::invalid_extended, 2);
return;
}
@@ -1452,7 +1452,7 @@ namespace libtorrent
}
#endif
disconnect(error_code(errors::invalid_message, libtorrent_category), 2);
disconnect(errors::invalid_message, 2);
return;
}
@@ -1544,7 +1544,7 @@ namespace libtorrent
// if we're finished and this peer is uploading only
// disconnect it
if (t->is_finished() && upload_only())
disconnect(error_code(errors::upload_upload_connection, libtorrent_category));
disconnect(errors::upload_upload_connection);
}
bool bt_peer_connection::dispatch_message(int received)
@@ -1581,7 +1581,7 @@ namespace libtorrent
#endif
m_statistics.received_bytes(0, received);
disconnect(error_code(errors::invalid_message, libtorrent_category));
disconnect(errors::invalid_message);
return packet_finished();
}
@@ -2086,7 +2086,7 @@ namespace libtorrent
// read dh key, generate shared secret
if (m_dh_key_exchange->compute_secret(recv_buffer.begin) == -1)
{
disconnect(error_code(errors::no_memory, libtorrent_category));
disconnect(errors::no_memory);
return;
}
@@ -2143,7 +2143,7 @@ namespace libtorrent
m_statistics.received_bytes(0, bytes_transferred);
if (packet_finished())
disconnect(error_code(errors::sync_hash_not_found, libtorrent_category), 2);
disconnect(errors::sync_hash_not_found, 2);
return;
}
@@ -2160,7 +2160,7 @@ namespace libtorrent
if (!m_sync_hash)
{
m_statistics.received_bytes(0, bytes_transferred);
disconnect(error_code(errors::no_memory, libtorrent_category));
disconnect(errors::no_memory);
return;
}
}
@@ -2177,7 +2177,7 @@ namespace libtorrent
m_sync_bytes_read += bytes_processed;
if (m_sync_bytes_read >= 512)
{
disconnect(error_code(errors::sync_hash_not_found, libtorrent_category), 2);
disconnect(errors::sync_hash_not_found, 2);
return;
}
@@ -2251,7 +2251,7 @@ namespace libtorrent
if (!m_RC4_handler.get())
{
disconnect(error_code(errors::invalid_info_hash, libtorrent_category), 2);
disconnect(errors::invalid_info_hash, 2);
return;
}
@@ -2263,7 +2263,7 @@ namespace libtorrent
const char sh_vc[] = {0,0,0,0, 0,0,0,0};
if (!std::equal(sh_vc, sh_vc+8, recv_buffer.begin + 20))
{
disconnect(error_code(errors::invalid_encryption_constant, libtorrent_category), 2);
disconnect(errors::invalid_encryption_constant, 2);
return;
}
@@ -2286,7 +2286,7 @@ namespace libtorrent
{
m_statistics.received_bytes(0, bytes_transferred);
if (packet_finished())
disconnect(error_code(errors::invalid_encryption_constant, libtorrent_category), 2);
disconnect(errors::invalid_encryption_constant, 2);
return;
}
@@ -2298,7 +2298,7 @@ namespace libtorrent
m_sync_vc.reset(new (std::nothrow) char[8]);
if (!m_sync_vc)
{
disconnect(error_code(errors::no_memory, libtorrent_category));
disconnect(errors::no_memory);
return;
}
std::fill(m_sync_vc.get(), m_sync_vc.get() + 8, 0);
@@ -2318,7 +2318,7 @@ namespace libtorrent
if (m_sync_bytes_read >= 512)
{
disconnect(error_code(errors::invalid_encryption_constant, libtorrent_category), 2);
disconnect(errors::invalid_encryption_constant, 2);
return;
}
@@ -2388,7 +2388,7 @@ namespace libtorrent
case pe_settings::plaintext:
if (!(crypto_field & 0x01))
{
disconnect(error_code(errors::no_plaintext_mode, libtorrent_category), 1);
disconnect(errors::no_plaintext_mode, 1);
return;
}
crypto_select = 0x01;
@@ -2396,7 +2396,7 @@ namespace libtorrent
case pe_settings::rc4:
if (!(crypto_field & 0x02))
{
disconnect(error_code(errors::no_rc4_mode, libtorrent_category), 1);
disconnect(errors::no_rc4_mode, 1);
return;
}
crypto_select = 0x02;
@@ -2418,7 +2418,7 @@ namespace libtorrent
}
if (!crypto_select)
{
disconnect(error_code(errors::unsupported_encryption_mode, libtorrent_category), 1);
disconnect(errors::unsupported_encryption_mode, 1);
return;
}
break;
@@ -2436,8 +2436,7 @@ namespace libtorrent
{
if (allowed_enc_level == pe_settings::plaintext)
{
disconnect(error_code(errors::unsupported_encryption_mode_selected
, libtorrent_category), 2);
disconnect(errors::unsupported_encryption_mode_selected, 2);
return;
}
m_rc4_encrypted = true;
@@ -2446,16 +2445,14 @@ namespace libtorrent
{
if (allowed_enc_level == pe_settings::rc4)
{
disconnect(error_code(errors::unsupported_encryption_mode_selected
, libtorrent_category), 2);
disconnect(errors::unsupported_encryption_mode_selected, 2);
return;
}
m_rc4_encrypted = false;
}
else
{
disconnect(error_code(errors::unsupported_encryption_mode_selected
, libtorrent_category), 2);
disconnect(errors::unsupported_encryption_mode_selected, 2);
return;
}
}
@@ -2463,7 +2460,7 @@ namespace libtorrent
int len_pad = detail::read_int16(recv_buffer.begin);
if (len_pad < 0 || len_pad > 512)
{
disconnect(error_code(errors::invalid_pad_size, libtorrent_category), 2);
disconnect(errors::invalid_pad_size, 2);
return;
}
@@ -2503,7 +2500,7 @@ namespace libtorrent
if (len_ia < 0)
{
disconnect(error_code(errors::invalid_encrypt_handshake, libtorrent_category), 2);
disconnect(errors::invalid_encrypt_handshake, 2);
return;
}
@@ -2622,7 +2619,7 @@ namespace libtorrent
#ifndef TORRENT_DISABLE_ENCRYPTION
if (!is_local() && m_ses.get_pe_settings().in_enc_policy == pe_settings::disabled)
{
disconnect(error_code(errors::no_incoming_encrypted, libtorrent_category));
disconnect(errors::no_incoming_encrypted);
return;
}
@@ -2641,7 +2638,7 @@ namespace libtorrent
TORRENT_ASSERT((!is_local() && m_encrypted) || is_local());
#endif // #ifndef TORRENT_DISABLE_ENCRYPTION
disconnect(error_code(errors::invalid_info_hash, libtorrent_category), 2);
disconnect(errors::invalid_info_hash, 2);
return;
}
@@ -2652,7 +2649,7 @@ namespace libtorrent
(m_ses.get_pe_settings().in_enc_policy == pe_settings::forced) &&
!m_encrypted)
{
disconnect(error_code(errors::no_incoming_regular, libtorrent_category));
disconnect(errors::no_incoming_regular);
return;
}
#endif
@@ -2727,7 +2724,7 @@ namespace libtorrent
#ifdef TORRENT_VERBOSE_LOGGING
(*m_logger) << " received invalid info_hash\n";
#endif
disconnect(error_code(errors::invalid_info_hash, libtorrent_category), 2);
disconnect(errors::invalid_info_hash, 2);
return;
}
@@ -2806,12 +2803,11 @@ namespace libtorrent
// if not, we should close the outgoing one.
if (pid < m_ses.get_peer_id() && is_local())
{
(*i)->connection->disconnect(error_code(errors::duplicate_peer_id
, libtorrent_category));
(*i)->connection->disconnect(errors::duplicate_peer_id);
}
else
{
disconnect(error_code(errors::duplicate_peer_id, libtorrent_category));
disconnect(errors::duplicate_peer_id);
return;
}
}
@@ -2822,7 +2818,7 @@ namespace libtorrent
if (pid == m_ses.get_peer_id())
{
if (peer_info_struct()) t->get_policy().ban_peer(peer_info_struct());
disconnect(error_code(errors::self_connection, libtorrent_category), 1);
disconnect(errors::self_connection, 1);
return;
}
@@ -2913,7 +2909,7 @@ namespace libtorrent
{
m_statistics.received_bytes(0, bytes_transferred);
// packet too large
disconnect(error_code(errors::packet_too_large, libtorrent_category), 2);
disconnect(errors::packet_too_large, 2);
return;
}
@@ -2945,7 +2941,7 @@ namespace libtorrent
if (!t)
{
m_statistics.received_bytes(0, bytes_transferred);
disconnect(error_code(errors::torrent_removed, libtorrent_category), 1);
disconnect(errors::torrent_removed, 1);
return;
}
#ifdef TORRENT_DEBUG