active_ice_controller_factory_interface.h |
|
1355 |
active_ice_controller_interface.h |
|
3334 |
async_stun_tcp_socket.cc |
|
5615 |
async_stun_tcp_socket.h |
|
1892 |
async_stun_tcp_socket_unittest.cc |
server |
11776 |
basic_async_resolver_factory.cc |
|
1489 |
basic_async_resolver_factory.h |
|
1317 |
basic_async_resolver_factory_unittest.cc |
|
797 |
basic_ice_controller.cc |
|
32955 |
basic_ice_controller.h |
|
7081 |
basic_packet_socket_factory.cc |
|
6364 |
basic_packet_socket_factory.h |
|
2081 |
candidate_pair_interface.h |
|
1196 |
connection.cc |
|
65784 |
connection.h |
|
21174 |
connection_info.cc |
|
1303 |
connection_info.h |
|
4155 |
default_ice_transport_factory.cc |
|
1657 |
default_ice_transport_factory.h |
|
1920 |
dtls_transport.cc |
|
30929 |
dtls_transport.h |
|
10645 |
dtls_transport_factory.h |
|
1307 |
dtls_transport_internal.cc |
|
621 |
dtls_transport_internal.h |
|
5995 |
dtls_transport_unittest.cc |
event_log= |
30061 |
fake_dtls_transport.h |
|
11342 |
fake_ice_transport.h |
|
14402 |
fake_packet_transport.h |
|
4436 |
fake_port_allocator.h |
|
10146 |
ice_agent_interface.h |
|
2949 |
ice_controller_factory_interface.h |
|
1323 |
ice_controller_interface.cc |
|
782 |
ice_controller_interface.h |
|
5844 |
ice_credentials_iterator.cc |
|
1279 |
ice_credentials_iterator.h |
|
1064 |
ice_credentials_iterator_unittest.cc |
|
1684 |
ice_switch_reason.cc |
|
1870 |
ice_switch_reason.h |
|
1327 |
ice_transport_internal.cc |
|
5802 |
ice_transport_internal.h |
|
16774 |
mock_active_ice_controller.h |
|
2924 |
mock_dns_resolving_packet_socket_factory.h |
|
1810 |
mock_ice_agent.h |
|
1657 |
mock_ice_controller.h |
|
3229 |
mock_ice_transport.h |
|
3013 |
p2p_constants.cc |
|
3266 |
p2p_constants.h |
|
5141 |
p2p_transport_channel.cc |
async_dns_resolver_factory= |
90061 |
p2p_transport_channel.h |
|
21547 |
p2p_transport_channel_ice_field_trials.h |
|
2918 |
p2p_transport_channel_unittest.cc |
|
277808 |
packet_transport_internal.cc |
|
1976 |
packet_transport_internal.h |
|
4614 |
packet_transport_internal_unittest.cc |
|
1985 |
port.cc |
= false |
34345 |
port.h |
|
19723 |
port_allocator.cc |
|
11955 |
port_allocator.h |
|
25590 |
port_allocator_unittest.cc |
|
15230 |
port_interface.cc |
|
638 |
port_interface.h |
|
8064 |
port_unittest.cc |
|
162096 |
pseudo_tcp.cc |
|
43179 |
pseudo_tcp.h |
tstamp(0), |
9170 |
pseudo_tcp_unittest.cc |
|
27626 |
regathering_controller.cc |
|
3121 |
regathering_controller.h |
|
4470 |
regathering_controller_unittest.cc |
pool size |
7781 |
stun_dictionary.cc |
|
12332 |
stun_dictionary.h |
|
6891 |
stun_dictionary_unittest.cc |
|
10492 |
stun_port.cc |
|
23618 |
stun_port.h |
|
11670 |
stun_port_unittest.cc |
|
31422 |
stun_request.cc |
|
11129 |
stun_request.h |
|
5558 |
stun_request_unittest.cc |
|
7947 |
stun_server.cc |
|
3805 |
stun_server.h |
|
2368 |
stun_server_unittest.cc |
|
4425 |
tcp_port.cc |
This is a diagram of how TCP reconnect works for the active side. The
passive side just waits for an incoming connection.
- Connected: Indicate whether the TCP socket is connected.
- Writable: Whether the stun binding is completed. Sending a data packet
before stun binding completed will trigger IPC socket layer to shutdown
the connection.
- PendingTCP: `connection_pending_` indicates whether there is an
outstanding TCP connection in progress.
- PretendWri: Tracked by `pretending_to_be_writable_`. Marking connection as
WRITE_TIMEOUT will cause the connection be deleted. Instead, we're
"pretending" we're still writable for a period of time such that reconnect
could work.
Data could only be sent in state 3. Sening data during state 2 & 6 will get
EWOULDBLOCK, 4 & 5 EPIPE.
OS Timeout 7 -------------+
+----------------------->|Connected: N |
| |Writable: N | Timeout
| Timeout |Connection is |<----------------+
| +------------------->|Dead | |
| | +--------------+ |
| | ^ |
| | OnClose | |
| | +-----------------------+ | |
| | | | |Timeout |
| | v | | |
| 4 +----------+ 5 -----+--+--+ 6 -----+-----+
| |Connected: N|Send() or |Connected: N| |Connected: Y|
| |Writable: Y|Ping() |Writable: Y|OnConnect |Writable: Y|
| |PendingTCP:N+--------> |PendingTCP:Y+---------> |PendingTCP:N|
| |PretendWri:Y| |PretendWri:Y| |PretendWri:Y|
| +-----+------+ +------------+ +---+--+-----+
| ^ ^ | |
| | | OnClose | |
| | +----------------------------------------------+ |
| | |
| | Stun Binding Completed |
| | |
| | OnClose |
| +------------------------------------------------+ |
| | v
1 -----------+ 2 -----------+Stun 3 -----------+
|Connected: N| |Connected: Y|Binding |Connected: Y|
|Writable: N|OnConnect |Writable: N|Completed |Writable: Y|
|PendingTCP:Y+---------> |PendingTCP:N+--------> |PendingTCP:N|
|PretendWri:N| |PretendWri:N| |PretendWri:N|
+------------+ +------------+ +------------+
|
24723 |
tcp_port.h |
|
7562 |
tcp_port_unittest.cc |
|
14982 |
test_stun_server.cc |
|
1765 |
test_stun_server.h |
|
1724 |
test_turn_customizer.h |
|
1670 |
test_turn_server.h |
|
5952 |
transport_description.cc |
renomination= |
6225 |
transport_description.h |
|
4955 |
transport_description_factory.cc |
|
5893 |
transport_description_factory.h |
|
3579 |
transport_description_factory_unittest.cc |
|
16293 |
transport_description_unittest.cc |
|
1989 |
transport_info.h |
|
1218 |
turn_port.cc |
|
71438 |
turn_port.h |
|
15815 |
turn_port_unittest.cc |
|
83950 |
turn_server.cc |
permute_extensions= |
31851 |
turn_server.h |
|
13493 |
turn_server_unittest.cc |
|
2437 |
udp_port.h |
|
586 |
wrapping_active_ice_controller.cc |
|
8472 |
wrapping_active_ice_controller.h |
|
4055 |
wrapping_active_ice_controller_unittest.cc |
|
11957 |