summaryrefslogtreecommitdiff
path: root/src/lib/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dev.c')
-rw-r--r--src/lib/dev.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lib/dev.c b/src/lib/dev.c
index 57dfc3f2..50b12b43 100644
--- a/src/lib/dev.c
+++ b/src/lib/dev.c
@@ -667,7 +667,10 @@ int flow_dealloc(int fd)
pthread_rwlock_rdlock(&ai.lock);
- assert(ai.flows[fd].flow_id >= 0);
+ if (ai.flows[fd].flow_id < 0) {
+ pthread_rwlock_unlock(&ai.lock);
+ return -ENOTALLOC;
+ }
msg.flow_id = ai.flows[fd].flow_id;
@@ -1467,7 +1470,7 @@ void ipcp_sdb_release(struct shm_du_buff * sdb)
shm_rdrbuff_remove(ai.rdrb, shm_du_buff_get_idx(sdb));
}
-void ipcp_flow_fini(int fd)
+int ipcp_flow_fini(int fd)
{
struct shm_rbuff * rx_rb;
@@ -1475,6 +1478,11 @@ void ipcp_flow_fini(int fd)
pthread_rwlock_rdlock(&ai.lock);
+ if (ai.flows[fd].flow_id < 0) {
+ pthread_rwlock_unlock(&ai.lock);
+ return -1;
+ }
+
shm_rbuff_set_acl(ai.flows[fd].rx_rb, ACL_FLOWDOWN);
shm_rbuff_set_acl(ai.flows[fd].tx_rb, ACL_FLOWDOWN);
@@ -1489,6 +1497,7 @@ void ipcp_flow_fini(int fd)
if (rx_rb != NULL)
shm_rbuff_fini(rx_rb);
+ return 0;
}
int ipcp_flow_get_qoscube(int fd,