diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/dev.c | 3 | ||||
| -rw-r--r-- | src/lib/shm_flow_set.c | 4 | 
2 files changed, 5 insertions, 2 deletions
| diff --git a/src/lib/dev.c b/src/lib/dev.c index f737b74c..41841988 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -960,12 +960,13 @@ int flow_event_wait(struct flow_set *       set,          if (fq->fqsize > 0)                  return 0; +        assert(!fq->next); +          ret = shm_flow_set_wait(ai.fqset, set->idx, fq->fqueue, timeout);          if (ret == -ETIMEDOUT)                  return -ETIMEDOUT;          fq->fqsize = ret; -        fq->next   = 0;          return 0;  } diff --git a/src/lib/shm_flow_set.c b/src/lib/shm_flow_set.c index f68773aa..3b1af83f 100644 --- a/src/lib/shm_flow_set.c +++ b/src/lib/shm_flow_set.c @@ -356,6 +356,7 @@ ssize_t shm_flow_set_wait(const struct shm_flow_set * shm_set,          assert(shm_set);          assert(idx < AP_MAX_FQUEUES); +        assert(fqueue);  #ifdef __APPLE__          pthread_mutex_lock(shm_set->lock); @@ -397,10 +398,11 @@ ssize_t shm_flow_set_wait(const struct shm_flow_set * shm_set,                  memcpy(fqueue,                         fqueue_ptr(shm_set, idx),                         shm_set->heads[idx] * sizeof(int)); +                ret = shm_set->heads[idx];                  shm_set->heads[idx] = 0;          }          pthread_cleanup_pop(true); -        return 0; +        return ret;  } | 
