diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/dev.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/src/lib/dev.c b/src/lib/dev.c index 440f40f9..4b5e56be 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -163,10 +163,8 @@ int ap_reg(char ** difs,                  return -EINVAL;          } -        if (_ap_instance == NULL) { -                LOG_DBG("ap_init was not called."); -                return -1; -        } +        if (_ap_instance == NULL) +                return -1; /* -ENOTINIT */          msg.code       = IRM_MSG_CODE__IRM_AP_REG;          msg.has_pid    = true; @@ -468,11 +466,16 @@ int flow_dealloc(int fd)          msg.code         = IRM_MSG_CODE__IRM_FLOW_DEALLOC;          msg.has_port_id  = true; - -        rw_lock_rdlock(&_ap_instance->data_lock); +        rw_lock_rdlock(&_ap_instance->flows_lock);          msg.port_id      = _ap_instance->flows[fd].port_id; +        rw_lock_unlock(&_ap_instance->flows_lock); + +        rw_lock_wrlock(&_ap_instance->data_lock); + +        bmp_release(_ap_instance->fds, fd); +          rw_lock_unlock(&_ap_instance->data_lock);          recv_msg = send_recv_irm_msg(&msg); @@ -556,7 +559,7 @@ ssize_t flow_write(int fd, void * buf, size_t count)                  return 0;          } else {                  while (shm_ap_rbuff_write(_ap_instance->flows[fd].rb, &e) < 0) -                        LOG_DBGF("Couldn't write to rbuff."); +                        ;          }          rw_lock_unlock(&_ap_instance->data_lock);  | 
