diff options
Diffstat (limited to 'src/ipcpd')
-rw-r--r-- | src/ipcpd/common/connmgr.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ipcpd/common/connmgr.c b/src/ipcpd/common/connmgr.c index 5b1d8c47..71b114aa 100644 --- a/src/ipcpd/common/connmgr.c +++ b/src/ipcpd/common/connmgr.c @@ -332,6 +332,7 @@ int connmgr_ipcp_connect(const char * dst, { struct conn_el * ce; int id; + int ret; assert(dst); assert(component); @@ -348,7 +349,13 @@ int connmgr_ipcp_connect(const char * dst, goto fail_id; } - if (connmgr_alloc(id, dst, &qs, &ce->conn)) { + pthread_cleanup_push(free, ce); + + ret = connmgr_alloc(id, dst, &qs, &ce->conn); + + pthread_cleanup_pop(false); + + if (ret < 0) { log_err("Failed to allocate flow."); goto fail_id; } |