Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
vcl: avoid reusing user provided events in lt mode
[vpp.git]
/
src
/
vcl
/
vppcom.c
diff --git
a/src/vcl/vppcom.c
b/src/vcl/vppcom.c
index
0b4d757
..
ecbbf7a
100644
(file)
--- a/
src/vcl/vppcom.c
+++ b/
src/vcl/vppcom.c
@@
-3369,7
+3369,7
@@
static void
vcl_epoll_wait_handle_lt (vcl_worker_t *wrk, struct epoll_event *events,
int maxevents, u32 *n_evts)
{
vcl_epoll_wait_handle_lt (vcl_worker_t *wrk, struct epoll_event *events,
int maxevents, u32 *n_evts)
{
- u32 add_event = 0, next, *to_remove = 0, *si;
+ u32 add_event = 0,
evt_flags = 0,
next, *to_remove = 0, *si;
vcl_session_t *s;
u64 evt_data;
int rv;
vcl_session_t *s;
u64 evt_data;
int rv;
@@
-3387,26
+3387,28
@@
vcl_epoll_wait_handle_lt (vcl_worker_t *wrk, struct epoll_event *events,
if ((s->vep.ev.events & EPOLLIN) && (rv = vcl_session_read_ready (s)))
{
add_event = 1;
if ((s->vep.ev.events & EPOLLIN) && (rv = vcl_session_read_ready (s)))
{
add_event = 1;
- ev
ents[*n_evts].event
s |= rv > 0 ? EPOLLIN : EPOLLHUP | EPOLLRDHUP;
+ ev
t_flag
s |= rv > 0 ? EPOLLIN : EPOLLHUP | EPOLLRDHUP;
evt_data = s->vep.ev.data.u64;
}
if ((s->vep.ev.events & EPOLLOUT) && (rv = vcl_session_write_ready (s)))
{
add_event = 1;
evt_data = s->vep.ev.data.u64;
}
if ((s->vep.ev.events & EPOLLOUT) && (rv = vcl_session_write_ready (s)))
{
add_event = 1;
- ev
ents[*n_evts].event
s |= rv > 0 ? EPOLLOUT : EPOLLHUP | EPOLLRDHUP;
+ ev
t_flag
s |= rv > 0 ? EPOLLOUT : EPOLLHUP | EPOLLRDHUP;
evt_data = s->vep.ev.data.u64;
}
if (!add_event && s->session_state > VCL_STATE_READY)
{
add_event = 1;
evt_data = s->vep.ev.data.u64;
}
if (!add_event && s->session_state > VCL_STATE_READY)
{
add_event = 1;
- ev
ents[*n_evts].event
s |= EPOLLHUP | EPOLLRDHUP;
+ ev
t_flag
s |= EPOLLHUP | EPOLLRDHUP;
evt_data = s->vep.ev.data.u64;
}
if (add_event)
{
evt_data = s->vep.ev.data.u64;
}
if (add_event)
{
+ events[*n_evts].events = evt_flags;
events[*n_evts].data.u64 = evt_data;
*n_evts += 1;
add_event = 0;
events[*n_evts].data.u64 = evt_data;
*n_evts += 1;
add_event = 0;
+ evt_flags = 0;
if (EPOLLONESHOT & s->vep.ev.events)
s->vep.ev.events = 0;
if (*n_evts == maxevents)
if (EPOLLONESHOT & s->vep.ev.events)
s->vep.ev.events = 0;
if (*n_evts == maxevents)