Skip to content

Commit b3fabbe

Browse files
committed
fix(event):1.8.8 解决单独监听kHupEvent事件,没有响应的问题
1 parent 6b3db4a commit b3fabbe

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

modules/event/engines/epoll/fd_event.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ bool EpollFdEvent::enable()
7878
if (events_ & kExceptEvent)
7979
++d_->except_event_num;
8080

81+
if (events_ & kHupEvent)
82+
++d_->hup_event_num;
83+
8184
d_->fd_events.push_back(this);
8285

8386
reloadEpoll();
@@ -100,6 +103,9 @@ bool EpollFdEvent::disable()
100103
if (events_ & kExceptEvent)
101104
--d_->except_event_num;
102105

106+
if (events_ & kHupEvent)
107+
--d_->hup_event_num;
108+
103109
auto iter = std::find(d_->fd_events.begin(), d_->fd_events.end(), this);
104110
d_->fd_events.erase(iter);
105111

@@ -129,6 +135,9 @@ void EpollFdEvent::reloadEpoll()
129135
if (d_->except_event_num > 0)
130136
new_events |= EPOLLERR;
131137

138+
if (d_->hup_event_num > 0)
139+
new_events |= EPOLLHUP;
140+
132141
d_->ev.events = new_events;
133142

134143
if (old_events == 0) {

modules/event/engines/epoll/types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ struct EpollFdSharedData {
3737
int read_event_num = 0; //!< 监听可读事件的FdEvent个数
3838
int write_event_num = 0; //!< 监听可写事件的FdEvent个数
3939
int except_event_num = 0; //!< 监听异常事件的FdEvent个数
40+
int hup_event_num = 0; //!< 监听挂起事件的FdEvent个数
4041

4142
std::vector<EpollFdEvent*> fd_events;
4243
};

version.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# TBOX版本号
22
TBOX_VERSION_MAJOR := 1
33
TBOX_VERSION_MINOR := 8
4-
TBOX_VERSION_REVISION := 7
4+
TBOX_VERSION_REVISION := 8

0 commit comments

Comments
 (0)