summaryrefslogtreecommitdiff
path: root/src/lib/rib.c
diff options
context:
space:
mode:
authorSander Vrijders <[email protected]>2017-03-26 16:04:54 +0000
committerdimitri staessens <[email protected]>2017-03-26 16:04:54 +0000
commit7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e (patch)
tree43abd2084831d5a36c88a8ad93b3dec3e48127cd /src/lib/rib.c
parent0a75074b15f66a60496d196c0759d33afa3c8b18 (diff)
parent572013b92d82e78ef5e5b19d79316ae3131c71af (diff)
downloadouroboros-7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e.tar.gz
ouroboros-7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e.zip
Merged in sandervrijders/ouroboros/be-pointer (pull request #425)
ipcpd: normal: Fix compilation issue
Diffstat (limited to 'src/lib/rib.c')
-rw-r--r--src/lib/rib.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/rib.c b/src/lib/rib.c
index 8468e88c..fc58f266 100644
--- a/src/lib/rib.c
+++ b/src/lib/rib.c
@@ -177,6 +177,8 @@ static struct revent * revent_dup(struct revent * ev)
re->flags = ev->flags;
+ list_head_init(&re->next);
+
return re;
}
@@ -196,7 +198,13 @@ static void rnode_notify_subs(struct rnode * node,
struct rn_sub * s = list_entry(p, struct rn_sub, next);
if (s->flags & ev->flags) {
struct revent * e = revent_dup(ev);
+ if (e == NULL)
+ continue;
+
+ pthread_mutex_lock(&s->sub->lock);
list_add_tail(&e->next, &s->sub->events);
+ pthread_cond_signal(&s->sub->cond);
+ pthread_mutex_unlock(&s->sub->lock);
}
if (ev->flags & RO_DELETE)
@@ -1130,7 +1138,7 @@ int rib_event_wait(ro_set_t * set,
while (list_is_empty(&sub->events) && ret != -ETIMEDOUT) {
if (timeout != NULL)
- ret = -pthread_cond_timedwait(&sub->cond ,
+ ret = -pthread_cond_timedwait(&sub->cond,
&sub->lock,
&abstime);
else