aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2020-04-24 17:09:25 +0000
committerDave Barach <openvpp@barachs.net>2020-04-25 11:39:59 +0000
commit5e6222a0332e38316b5a58b23c35cca69bb72025 (patch)
tree672175c15152527f48341b9453926c665ef934d9
parentf593b5792031b3797cdcdfd3fbb33ac4de8c9a5d (diff)
vcl: generate select events on read/write errors
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I3429f9d0406b6d710846fc82d77400f26f77fdf4
-rw-r--r--src/vcl/ldp.c1
-rw-r--r--src/vcl/vppcom.c16
2 files changed, 9 insertions, 8 deletions
diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c
index c23f995d567..e5baa0ead7e 100644
--- a/src/vcl/ldp.c
+++ b/src/vcl/ldp.c
@@ -776,6 +776,7 @@ ldp_pselect (int nfds, fd_set * __restrict readfds,
{
errno = -rv;
rv = -1;
+ goto done;
}
else if (rv > 0)
{
diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c
index 579cbc1657b..a8cebd8c413 100644
--- a/src/vcl/vppcom.c
+++ b/src/vcl/vppcom.c
@@ -2400,12 +2400,12 @@ vppcom_select (int n_bits, vcl_si_set * read_map, vcl_si_set * write_map,
clib_bitmap_foreach (sid, wrk->wr_bitmap, ({
if (!(session = vcl_session_get (wrk, sid)))
{
- if (except_map && sid < minbits)
- clib_bitmap_set_no_check (except_map, sid, 1);
- continue;
+ clib_bitmap_set_no_check ((uword*)write_map, sid, 1);
+ bits_set++;
+ continue;
}
- if (vcl_session_write_ready (session) > 0)
+ if (vcl_session_write_ready (session))
{
clib_bitmap_set_no_check ((uword*)write_map, sid, 1);
bits_set++;
@@ -2421,12 +2421,12 @@ check_rd:
clib_bitmap_foreach (sid, wrk->rd_bitmap, ({
if (!(session = vcl_session_get (wrk, sid)))
{
- if (except_map && sid < minbits)
- clib_bitmap_set_no_check (except_map, sid, 1);
- continue;
+ clib_bitmap_set_no_check ((uword*)read_map, sid, 1);
+ bits_set++;
+ continue;
}
- if (vcl_session_read_ready (session) > 0)
+ if (vcl_session_read_ready (session))
{
clib_bitmap_set_no_check ((uword*)read_map, sid, 1);
bits_set++;