Improve the accuracy of epoll event(EPOLLRDHUP).
Type: fix
Signed-off-by: liuyacan <liuyacan@corp.netease.com>
Change-Id: Ia31e696a0666c417ca99e684c6a4515f1cafc646
sid = s->session_index;
session_events = s->vep.ev.events;
add_event = 1;
sid = s->session_index;
session_events = s->vep.ev.events;
add_event = 1;
- events[*num_ev].events = EPOLLHUP | EPOLLRDHUP;
+ if (EPOLLRDHUP & session_events)
+ {
+ /* If app can distinguish between RDHUP and HUP,
+ * we make finer control */
+ events[*num_ev].events = EPOLLRDHUP;
+ if (s->flags & VCL_SESSION_F_WR_SHUTDOWN)
+ {
+ events[*num_ev].events |= EPOLLHUP;
+ }
+ }
+ else
+ {
+ events[*num_ev].events = EPOLLHUP;
+ }
session_evt_data = s->vep.ev.data.u64;
session_evt_data = s->vep.ev.data.u64;
break;
case SESSION_CTRL_EVT_RESET:
if (!e->postponed)
break;
case SESSION_CTRL_EVT_RESET:
if (!e->postponed)