MCPcopy Create free account
hub / github.com/TelegramMessenger/cocoon / start_up

Method start_up

net/TcpConnection.cpp:36–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34namespace cocoon {
35
36void TcpConnection::start_up() {
37 self_ = actor_id(this);
38 update_timer();
39
40 if (!type_) {
41 CHECK(socket_pipe_);
42 start();
43 return;
44 }
45
46 type_->type.visit(td::overloaded(
47 [&](const TcpConnectionSimple &t) {
48 auto R = td::SocketFd::open(connect_to_);
49 if (R.is_error()) {
50 fail(R.move_as_error_prefix(PSTRING() << "tcp: failed to connect to " << connect_to_ << ": "));
51 return;
52 }
53 socket_pipe_ = td::make_socket_pipe(R.move_as_ok());
54 start();
55 },
56 [&](const TcpConnectionSocks5 &t) {
57 auto R = td::SocketFd::open(t.connect_via);
58 if (R.is_error()) {
59 fail(R.move_as_error_prefix(PSTRING() << "tcp: failed to connect to " << t.connect_via << ": "));
60 return;
61 }
62 td::connect(
63 [self = actor_id(this), connect_to = connect_to_](td::Result<td::BufferedFd<td::SocketFd>> R) {
64 if (R.is_ok()) {
65 td::actor::send_closure(self, &TcpConnection::socks5_connected, R.move_as_ok());
66 } else {
67 td::actor::send_closure(
68 self, &TcpConnection::fail,
69 R.move_as_error_prefix(PSTRING() << "tcp: failed to connect to " << connect_to << " via socks5: "));
70 }
71 },
72 socks5(R.move_as_ok(), connect_to_, "", ""));
73 },
74 [&](const TcpConnectionTls &t) {
75 auto R = td::SocketFd::open(connect_to_);
76 if (R.is_error()) {
77 fail(R.move_as_error_prefix(PSTRING() << "tcp: failed to connect to " << connect_to_ << ": "));
78 return;
79 }
80 auto pipe = td::make_socket_pipe(R.move_as_ok());
81 td::connect(
82 [self = actor_id(this)](td::Result<td::SocketPipe> R) {
83 if (R.is_ok()) {
84 td::actor::send_closure(self, &TcpConnection::tls_solved_pow, R.move_as_ok());
85 } else {
86 td::actor::send_closure(self, &TcpConnection::fail,
87 R.move_as_error_prefix("tcp: failed to solve pow: "));
88 }
89 },
90 pow::solve_pow_client(std::move(pipe), 28));
91 }));
92}
93

Callers

nothing calls this directly

Calls 2

socks5Function · 0.85
solve_pow_clientFunction · 0.85

Tested by

no test coverage detected