summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal/ribmgr.c
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2016-12-06 14:31:49 +0000
committerdimitri staessens <[email protected]>2016-12-06 14:31:49 +0000
commit3068c438767fe54a1cced215e6df379a5c7ea8bf (patch)
tree841b7c48c047afc1ad2bc44999158e0bdf657a9e /src/ipcpd/normal/ribmgr.c
parent82ae7959d21c654fe9fd14de504f47d18b1ebcfc (diff)
parenta4031fa3d1eb63c1ff83ba37e5e89d6b1a7d5d04 (diff)
downloadouroboros-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.c9
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)