Skip to content

Commit 2d3d402

Browse files
committed
Merge branch 'develop'
2 parents c07a4f7 + c1cb136 commit 2d3d402

File tree

4 files changed

+9
-18
lines changed

4 files changed

+9
-18
lines changed

modules/event/engines/epoll/fd_event.cpp

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -165,27 +165,20 @@ void EpollFdEvent::OnEventCallback(uint32_t events, void *obj)
165165
tbox_events |= kExceptEvent;
166166
}
167167

168-
bool is_got_hup = false;
169-
170168
if (events & EPOLLHUP) {
171169
events &= ~EPOLLHUP;
172-
is_got_hup = true;
170+
//! 在epoll中,无论有没有监听EPOLLHUP,在对端close了fd时都会触发本端EPOLLHUP事件
171+
//! 只要发生了EPOLLHUB事件,只有让上层关闭该事件所有的事件才能停止EPOLLHUP的触发
172+
//! 否则它会一直触发事件,导致Loop空跑,CPU占满问题
173+
//! 为此,将HUP事件当成可读事件,上层读到0字节则表示对端已关闭
174+
tbox_events |= kReadEvent;
173175
}
174176

175177
//! 要先复制一份,因为在for中很可能会改动到d->fd_events,引起迭代器失效问题
176178
auto tmp = d->fd_events;
177-
for (auto event : tmp) {
179+
for (auto event : tmp)
178180
event->onEvent(tbox_events);
179181

180-
//! 在epoll中,无论有没有监听EPOLLHUP,在对端close了fd时都会触发本端EPOLLHUP事件
181-
//! 只要发生了EPOLLHUB事件,只有让上层关闭该事件所有的事件才能停止EPOLLHUP的触发
182-
//! 否则它会一直触发事件,导致Loop空跑,CPU占满问题
183-
if (is_got_hup) {
184-
//! 将HUP事件当成可读事件,上层读到0字节则表示对端已关闭
185-
event->onEvent(kReadEvent);
186-
}
187-
}
188-
189182
if (events)
190183
LogWarn("unhandle events:%08X, fd:%d", events, d->fd);
191184
}

modules/network/buffered_fd.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ void BufferedFd::onReadCallback(short)
228228
}
229229

230230
} else if (rsize == 0) { //! 读到0字节数据,说明fd_已不可读了
231-
sp_read_event_->disable();
232231
if (read_zero_cb_) {
233232
++cb_level_;
234233
read_zero_cb_();

modules/network/tcp_connection.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ void TcpConnection::onSocketClosed()
140140
{
141141
LogInfo("%s", peer_addr_.toString().c_str());
142142

143+
sp_buffered_fd_->disable();
144+
143145
BufferedFd *tmp = nullptr;
144146
std::swap(tmp, sp_buffered_fd_);
145147

@@ -157,9 +159,6 @@ void TcpConnection::onSocketClosed()
157159

158160
void TcpConnection::onReadError(int errnum)
159161
{
160-
if (errnum == ECONNRESET)
161-
return;
162-
163162
LogNotice("errno:%d, %s", errnum, strerror(errnum));
164163
onSocketClosed();
165164
}

version.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121
# TBOX版本号
2222
TBOX_VERSION_MAJOR := 1
2323
TBOX_VERSION_MINOR := 11
24-
TBOX_VERSION_REVISION := 4
24+
TBOX_VERSION_REVISION := 5

0 commit comments

Comments
 (0)