From 5f88ebb43acc7b7fa3ac272a444677dd72ccb63d Mon Sep 17 00:00:00 2001 From: Determinant Date: Wed, 14 Nov 2018 23:14:32 -0500 Subject: fix bugs in `terminate` --- include/salticidae/network.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'include/salticidae/network.h') diff --git a/include/salticidae/network.h b/include/salticidae/network.h index a63976b..60d8f20 100644 --- a/include/salticidae/network.h +++ b/include/salticidae/network.h @@ -405,7 +405,7 @@ void MsgNetwork::Conn::on_read() { ConnPool::Conn::on_read(); auto &recv_buffer = this->recv_buffer; auto mn = get_net(); - while (fd != -1) + while (self_ref) { if (msg_state == Conn::HEADER) { @@ -472,11 +472,6 @@ void PeerNetwork::Conn::on_setup() { SALTICIDAE_LOG_INFO("peer ping-pong timeout"); conn->terminate(); }); - if (this->get_mode() == Conn::ConnMode::ACTIVE) - { - peer_id = this->get_addr(); - if (pn->id_mode == IP_BASED) peer_id.port = 0; - } /* the initial ping-pong to set up the connection */ tcall_reset_timeout(worker, conn, pn->conn_timeout); pn->send_msg(MsgPing(pn->listen_port), *conn); @@ -584,6 +579,9 @@ void PeerNetwork::start_active_conn(const NetAddr &addr) { auto conn = static_pointer_cast(MsgNet::_connect(addr)); assert(p->conn == nullptr); p->conn = conn; + conn->peer_id = addr; + if (id_mode == IP_BASED) + conn->peer_id.port = 0; } /* end: functions invoked by the dispatcher */ -- cgit v1.2.3