diff options
author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-08-25 10:12:02 +0200 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-08-25 10:12:02 +0200 |
commit | 8f9aa6f02772d6f46b55741cdd76607a4e22c6a1 (patch) | |
tree | 4b85439372c516e55e9e4fc7619dd0db62070ab3 /src/ipcpd/normal | |
parent | 5b74bb43d36624c4cfb81d5b37833ea241061b26 (diff) | |
parent | d240499ba1699be3da5c04504ae2f5c5e44c7e80 (diff) | |
download | ouroboros-8f9aa6f02772d6f46b55741cdd76607a4e22c6a1.tar.gz ouroboros-8f9aa6f02772d6f46b55741cdd76607a4e22c6a1.zip |
Merged in sandervrijders/ouroboros/be-fix (pull request #223)
ipcpd: normal: Fix uninitialized value
Diffstat (limited to 'src/ipcpd/normal')
-rw-r--r-- | src/ipcpd/normal/fmgr.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/ipcpd/normal/fmgr.c b/src/ipcpd/normal/fmgr.c index 23d9514a..2e73d71f 100644 --- a/src/ipcpd/normal/fmgr.c +++ b/src/ipcpd/normal/fmgr.c @@ -428,7 +428,6 @@ int fmgr_flow_alloc_resp(pid_t n_api, { struct n_flow * flow; flow_alloc_msg_t msg = FLOW_ALLOC_MSG__INIT; - int ret; buffer_t buf; pthread_mutex_lock(&fmgr->n_flows_lock); @@ -464,26 +463,30 @@ int fmgr_flow_alloc_resp(pid_t n_api, flow_alloc_msg__pack(&msg, buf.data); if (response < 0) { - ret = frct_i_destroy(flow->frct_i, &buf); + frct_i_destroy(flow->frct_i, &buf); free(buf.data); list_del(&flow->next); free(flow); } else { - frct_i_accept(flow->frct_i, &buf); + if (frct_i_accept(flow->frct_i, &buf)) { + pthread_mutex_unlock(&fmgr->n_flows_lock); + return -1; + } + flow->flow.state = FLOW_ALLOCATED; flow->flow.api = n_api; flow->flow.rb = shm_ap_rbuff_open(n_api); if (flow->flow.rb == NULL) { - ret = n_flow_dealloc(port_id); + n_flow_dealloc(port_id); pthread_mutex_unlock(&fmgr->n_flows_lock); - return ret; + return -1; } } pthread_mutex_unlock(&fmgr->n_flows_lock); - return ret; + return 0; } int fmgr_flow_dealloc(int port_id) |