Monero
Loading...
Searching...
No Matches
net.cpp File Reference
#include <algorithm>
#include <atomic>
#include <boost/archive/portable_binary_oarchive.hpp>
#include <boost/archive/portable_binary_iarchive.hpp>
#include <boost/asio/buffer.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/read.hpp>
#include <boost/asio/steady_timer.hpp>
#include <boost/asio/write.hpp>
#include <boost/endian/conversion.hpp>
#include <boost/range/adaptor/sliced.hpp>
#include <boost/range/combine.hpp>
#include <boost/optional/optional.hpp>
#include <boost/system/error_code.hpp>
#include <boost/thread/scoped_thread.hpp>
#include <boost/thread/thread.hpp>
#include <boost/uuid/nil_generator.hpp>
#include <boost/uuid/random_generator.hpp>
#include <boost/uuid/uuid.hpp>
#include <cstdint>
#include <cstring>
#include <functional>
#include <gtest/gtest.h>
#include <map>
#include <memory>
#include <thread>
#include <type_traits>
#include <csignal>
#include <pthread.h>
#include "crypto/crypto.h"
#include "net/dandelionpp.h"
#include "net/error.h"
#include "net/host.h"
#include "net/i2p_address.h"
#include "net/net_helper.h"
#include "net/net_utils_base.h"
#include "net/socks.h"
#include "net/socks_connect.h"
#include "net/parse.h"
#include "net/tor_address.h"
#include "net/zmq.h"
#include "p2p/net_peerlist_boost_serialization.h"
#include "serialization/keyvalue_serialization.h"
#include "storages/portable_storage.h"
#include "unit_tests_utils.h"
Include dependency graph for net.cpp:

Functions

 TEST (host, canonicalize_host)
 TEST (blocked_mode_client, shutdown_aborts_blocked_recv)
 TEST (blocked_mode_client, shutdown_aborts_blocked_recv_from_signal_handler)
 TEST (blocked_mode_client, shutdown_aborts_blocked_connect)
 TEST (blocked_mode_client, shutdown_aborts_stalled_ssl_handshake)
 TEST (blocked_mode_client, shutdown_is_permanent)
 TEST (blocked_mode_client, eof_marks_disconnected_and_allows_reconnect)
 TEST (blocked_mode_client, peer_eof_detected_before_reuse)
 TEST (blocked_mode_client, disconnect_is_idempotent_after_peer_close)
 TEST_P (blocked_mode_client_ssl, close_notify_detected_before_reuse)
 TEST_P (blocked_mode_client_ssl, preserves_unread_data)
 TEST_P (blocked_mode_client_ssl, abrupt_eof_detected_before_reuse)
 TEST_P (blocked_mode_client_ssl, partial_record_does_not_block)
 TEST_P (blocked_mode_client_ssl, idle_probe_allows_request_and_response)
 TEST_P (blocked_mode_client_ssl, reconnect_with_pending_probe)
 TEST_P (blocked_mode_client_ssl, shutdown_aborts_pending_probe)
 TEST_P (blocked_mode_client_ssl, data_before_close_notify_is_preserved)
 TEST_P (blocked_mode_client_ssl, recv_times_out_with_pending_probe)
 TEST_P (blocked_mode_client_ssl, disconnect_with_pending_probe_is_graceful)
 TEST_P (blocked_mode_client_ssl, disconnect_after_peer_eof_is_graceful)
 TEST_P (blocked_mode_client_ssl, disconnect_after_abrupt_eof_is_idempotent)
 TEST_P (blocked_mode_client_ssl, disconnect_after_shutdown_does_not_wait_for_peer)
 TEST_P (blocked_mode_client_ssl, recv_n_preserves_probe_byte_and_count)
 TEST_P (blocked_mode_client_ssl, recv_n_returns_false_on_eof_after_probe_byte)
 INSTANTIATE_TEST_CASE_P (tls, blocked_mode_client_ssl, testing::Values(TLS1_2_VERSION))
 TEST (tor_address, constants)
 TEST (tor_address, invalid)
 TEST (tor_address, unblockable_types)
 TEST (tor_address, valid)
 TEST (tor_address, generic_network_address)
 TEST (tor_address, epee_serializev_v2)
 TEST (tor_address, epee_serializev_v3)
 TEST (tor_address, epee_serialize_unknown)
 TEST (tor_address, boost_serialize_v2)
 TEST (tor_address, boost_serialize_v3)
 TEST (tor_address, boost_serialize_unknown)
 TEST (get_network_address, onion)
 TEST (i2p_address, constants)
 TEST (i2p_address, invalid)
 TEST (i2p_address, unblockable_types)
 TEST (i2p_address, valid)
 TEST (i2p_address, generic_network_address)
 TEST (i2p_address, epee_serializev_b32)
 TEST (i2p_address, epee_serialize_unknown)
 TEST (i2p_address, boost_serialize_b32)
 TEST (i2p_address, boost_serialize_unknown)
 TEST (get_network_address, i2p)
 TEST (get_network_address, ipv4)
 TEST (get_network_address, ipv4subnet)
 TEST (get_network_address_host_and_port, ipv4)
 TEST (get_network_address_host_and_port, ipv6)
 TEST (get_network_address_host_and_port, hostname)
 TEST (scheme_and_authority, basic)
 TEST (userinfo_and_hostport, basic)
 TEST (user_and_pass, basic)
 TEST (uri_components, get)
 TEST (socks_endpoint, get)
 TEST (socks_client, unsupported_command)
 TEST (socks_client, no_command)
 TEST (socks_client, connect_command)
 TEST (socks_client, v5_ipv6_connect_command)
 TEST (socks_client, connect_command_failed)
 TEST (socks_client, v5_ipv4_connect_command_failed)
 TEST (socks_client, resolve_command)
 TEST (socks_client, v5_username_host_connect)
 TEST (socks_client, v5_usernameskipped_host_connect)
 TEST (socks_connector, host)
 TEST (socks_connector, ipv4)
 TEST (socks_connector, error)
 TEST (socks_connector, timeout)
 TEST (dandelionpp_map, traits)
 TEST (dandelionpp_map, empty)
 TEST (dandelionpp_map, zero_stems)
 TEST (dandelionpp_map, dropped_connection)
 TEST (dandelionpp_map, dropped_connection_remapped)
 TEST (dandelionpp_map, dropped_all_connections)
 TEST (zmq, error_codes)
 TEST (zmq, read_write)
 TEST (zmq, read_write_slice)
 TEST (zmq, write_slice_fail)
 TEST (zmq, read_write_multipart)
 TEST (zmq, read_write_termination)

Function Documentation

◆ INSTANTIATE_TEST_CASE_P()

INSTANTIATE_TEST_CASE_P ( tls ,
blocked_mode_client_ssl ,
testing::Values(TLS1_2_VERSION)  )

◆ TEST() [1/66]

TEST ( blocked_mode_client ,
disconnect_is_idempotent_after_peer_close  )

◆ TEST() [2/66]

TEST ( blocked_mode_client ,
eof_marks_disconnected_and_allows_reconnect  )

◆ TEST() [3/66]

TEST ( blocked_mode_client ,
peer_eof_detected_before_reuse  )

◆ TEST() [4/66]

TEST ( blocked_mode_client ,
shutdown_aborts_blocked_connect  )

◆ TEST() [5/66]

TEST ( blocked_mode_client ,
shutdown_aborts_blocked_recv  )

◆ TEST() [6/66]

TEST ( blocked_mode_client ,
shutdown_aborts_blocked_recv_from_signal_handler  )

◆ TEST() [7/66]

TEST ( blocked_mode_client ,
shutdown_aborts_stalled_ssl_handshake  )

◆ TEST() [8/66]

TEST ( blocked_mode_client ,
shutdown_is_permanent  )

◆ TEST() [9/66]

TEST ( dandelionpp_map ,
dropped_all_connections  )

◆ TEST() [10/66]

TEST ( dandelionpp_map ,
dropped_connection  )

◆ TEST() [11/66]

TEST ( dandelionpp_map ,
dropped_connection_remapped  )

◆ TEST() [12/66]

TEST ( dandelionpp_map ,
empty  )

◆ TEST() [13/66]

TEST ( dandelionpp_map ,
traits  )

◆ TEST() [14/66]

TEST ( dandelionpp_map ,
zero_stems  )

◆ TEST() [15/66]

TEST ( get_network_address ,
i2p  )

◆ TEST() [16/66]

TEST ( get_network_address ,
ipv4  )

◆ TEST() [17/66]

TEST ( get_network_address ,
ipv4subnet  )

◆ TEST() [18/66]

TEST ( get_network_address ,
onion  )

◆ TEST() [19/66]

TEST ( get_network_address_host_and_port ,
hostname  )

◆ TEST() [20/66]

TEST ( get_network_address_host_and_port ,
ipv4  )

◆ TEST() [21/66]

TEST ( get_network_address_host_and_port ,
ipv6  )

◆ TEST() [22/66]

TEST ( host ,
canonicalize_host  )

◆ TEST() [23/66]

TEST ( i2p_address ,
boost_serialize_b32  )

◆ TEST() [24/66]

TEST ( i2p_address ,
boost_serialize_unknown  )

◆ TEST() [25/66]

TEST ( i2p_address ,
constants  )

◆ TEST() [26/66]

TEST ( i2p_address ,
epee_serialize_unknown  )

◆ TEST() [27/66]

TEST ( i2p_address ,
epee_serializev_b32  )

◆ TEST() [28/66]

TEST ( i2p_address ,
generic_network_address  )

◆ TEST() [29/66]

TEST ( i2p_address ,
invalid  )

◆ TEST() [30/66]

TEST ( i2p_address ,
unblockable_types  )

◆ TEST() [31/66]

TEST ( i2p_address ,
valid  )

◆ TEST() [32/66]

TEST ( scheme_and_authority ,
basic  )

◆ TEST() [33/66]

TEST ( socks_client ,
connect_command  )

◆ TEST() [34/66]

TEST ( socks_client ,
connect_command_failed  )

◆ TEST() [35/66]

TEST ( socks_client ,
no_command  )

◆ TEST() [36/66]

TEST ( socks_client ,
resolve_command  )

◆ TEST() [37/66]

TEST ( socks_client ,
unsupported_command  )

◆ TEST() [38/66]

TEST ( socks_client ,
v5_ipv4_connect_command_failed  )

◆ TEST() [39/66]

TEST ( socks_client ,
v5_ipv6_connect_command  )

◆ TEST() [40/66]

TEST ( socks_client ,
v5_username_host_connect  )

◆ TEST() [41/66]

TEST ( socks_client ,
v5_usernameskipped_host_connect  )

◆ TEST() [42/66]

TEST ( socks_connector ,
error  )

◆ TEST() [43/66]

TEST ( socks_connector ,
host  )

◆ TEST() [44/66]

TEST ( socks_connector ,
ipv4  )

◆ TEST() [45/66]

TEST ( socks_connector ,
timeout  )

◆ TEST() [46/66]

TEST ( socks_endpoint ,
get  )

◆ TEST() [47/66]

TEST ( tor_address ,
boost_serialize_unknown  )

◆ TEST() [48/66]

TEST ( tor_address ,
boost_serialize_v2  )

◆ TEST() [49/66]

TEST ( tor_address ,
boost_serialize_v3  )

◆ TEST() [50/66]

TEST ( tor_address ,
constants  )

◆ TEST() [51/66]

TEST ( tor_address ,
epee_serialize_unknown  )

◆ TEST() [52/66]

TEST ( tor_address ,
epee_serializev_v2  )

◆ TEST() [53/66]

TEST ( tor_address ,
epee_serializev_v3  )

◆ TEST() [54/66]

TEST ( tor_address ,
generic_network_address  )

◆ TEST() [55/66]

TEST ( tor_address ,
invalid  )

◆ TEST() [56/66]

TEST ( tor_address ,
unblockable_types  )

◆ TEST() [57/66]

TEST ( tor_address ,
valid  )

◆ TEST() [58/66]

TEST ( uri_components ,
get  )

◆ TEST() [59/66]

TEST ( user_and_pass ,
basic  )

◆ TEST() [60/66]

TEST ( userinfo_and_hostport ,
basic  )

◆ TEST() [61/66]

TEST ( zmq ,
error_codes  )

◆ TEST() [62/66]

TEST ( zmq ,
read_write  )

◆ TEST() [63/66]

TEST ( zmq ,
read_write_multipart  )

◆ TEST() [64/66]

TEST ( zmq ,
read_write_slice  )

◆ TEST() [65/66]

TEST ( zmq ,
read_write_termination  )

◆ TEST() [66/66]

TEST ( zmq ,
write_slice_fail  )

◆ TEST_P() [1/15]

TEST_P ( blocked_mode_client_ssl ,
abrupt_eof_detected_before_reuse  )

◆ TEST_P() [2/15]

TEST_P ( blocked_mode_client_ssl ,
close_notify_detected_before_reuse  )

◆ TEST_P() [3/15]

TEST_P ( blocked_mode_client_ssl ,
data_before_close_notify_is_preserved  )

◆ TEST_P() [4/15]

TEST_P ( blocked_mode_client_ssl ,
disconnect_after_abrupt_eof_is_idempotent  )

◆ TEST_P() [5/15]

TEST_P ( blocked_mode_client_ssl ,
disconnect_after_peer_eof_is_graceful  )

◆ TEST_P() [6/15]

TEST_P ( blocked_mode_client_ssl ,
disconnect_after_shutdown_does_not_wait_for_peer  )

◆ TEST_P() [7/15]

TEST_P ( blocked_mode_client_ssl ,
disconnect_with_pending_probe_is_graceful  )

◆ TEST_P() [8/15]

TEST_P ( blocked_mode_client_ssl ,
idle_probe_allows_request_and_response  )

◆ TEST_P() [9/15]

TEST_P ( blocked_mode_client_ssl ,
partial_record_does_not_block  )

◆ TEST_P() [10/15]

TEST_P ( blocked_mode_client_ssl ,
preserves_unread_data  )

◆ TEST_P() [11/15]

TEST_P ( blocked_mode_client_ssl ,
reconnect_with_pending_probe  )

◆ TEST_P() [12/15]

TEST_P ( blocked_mode_client_ssl ,
recv_n_preserves_probe_byte_and_count  )

◆ TEST_P() [13/15]

TEST_P ( blocked_mode_client_ssl ,
recv_n_returns_false_on_eof_after_probe_byte  )

◆ TEST_P() [14/15]

TEST_P ( blocked_mode_client_ssl ,
recv_times_out_with_pending_probe  )

◆ TEST_P() [15/15]

TEST_P ( blocked_mode_client_ssl ,
shutdown_aborts_pending_probe  )