diff options
author | dimitri staessens <[email protected]> | 2016-12-06 14:31:49 +0000 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2016-12-06 14:31:49 +0000 |
commit | 3068c438767fe54a1cced215e6df379a5c7ea8bf (patch) | |
tree | 841b7c48c047afc1ad2bc44999158e0bdf657a9e /src/ipcpd/normal/ribmgr.c | |
parent | 82ae7959d21c654fe9fd14de504f47d18b1ebcfc (diff) | |
parent | a4031fa3d1eb63c1ff83ba37e5e89d6b1a7d5d04 (diff) | |
download | ouroboros-3068c438767fe54a1cced215e6df379a5c7ea8bf.tar.gz ouroboros-3068c438767fe54a1cced215e6df379a5c7ea8bf.zip |
Merged in sandervrijders/ouroboros/be-fix-normal-shutdown (pull request #320)
ipcpd: normal: Fix errors on IPCP shutdown
Diffstat (limited to 'src/ipcpd/normal/ribmgr.c')
-rw-r--r-- | src/ipcpd/normal/ribmgr.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ipcpd/normal/ribmgr.c b/src/ipcpd/normal/ribmgr.c index 02cbbbfd..cbf68d0c 100644 --- a/src/ipcpd/normal/ribmgr.c +++ b/src/ipcpd/normal/ribmgr.c @@ -1644,6 +1644,7 @@ int ro_subscribe(const char * name, struct ro_sub_ops * ops) { struct ro_sub * sub; + int sid; assert(name); assert(ops); @@ -1664,19 +1665,21 @@ int ro_subscribe(const char * name, pthread_mutex_lock(&rib.subs_lock); - sub->sid = bmp_allocate(rib.sids); - if (sub->sid < 0) { + sid = bmp_allocate(rib.sids); + if (sid < 0) { pthread_mutex_unlock(&rib.subs_lock); free(sub->name); free(sub); LOG_ERR("Failed to get sub id."); + return -1; } + sub->sid = sid; list_add(&sub->next, &rib.subs); pthread_mutex_unlock(&rib.subs_lock); - return 0; + return sid; } int ro_unsubscribe(int sid) |