diff options
author | Sander Vrijders <[email protected]> | 2017-03-26 16:04:54 +0000 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2017-03-26 16:04:54 +0000 |
commit | 7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e (patch) | |
tree | 43abd2084831d5a36c88a8ad93b3dec3e48127cd /src | |
parent | 0a75074b15f66a60496d196c0759d33afa3c8b18 (diff) | |
parent | 572013b92d82e78ef5e5b19d79316ae3131c71af (diff) | |
download | ouroboros-7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e.tar.gz ouroboros-7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e.zip |
Merged in sandervrijders/ouroboros/be-pointer (pull request #425)
ipcpd: normal: Fix compilation issue
Diffstat (limited to 'src')
-rw-r--r-- | src/ipcpd/normal/fmgr.c | 2 | ||||
-rw-r--r-- | src/ipcpd/normal/graph.c | 14 | ||||
-rw-r--r-- | src/ipcpd/normal/routing.c | 4 | ||||
-rw-r--r-- | src/lib/rib.c | 10 |
4 files changed, 20 insertions, 10 deletions
diff --git a/src/ipcpd/normal/fmgr.c b/src/ipcpd/normal/fmgr.c index d2966d0c..a8a9ba58 100644 --- a/src/ipcpd/normal/fmgr.c +++ b/src/ipcpd/normal/fmgr.c @@ -494,7 +494,7 @@ int fmgr_np1_alloc(int fd, return -1; } - free(buf->data); + free(buf.data); fmgr.np1_fd_to_cep_id[fd] = cep_id; fmgr.np1_cep_id_to_fd[cep_id] = fd; diff --git a/src/ipcpd/normal/graph.c b/src/ipcpd/normal/graph.c index b3e105e3..272576bb 100644 --- a/src/ipcpd/normal/graph.c +++ b/src/ipcpd/normal/graph.c @@ -106,15 +106,15 @@ static void del_edge(struct edge * edge) free(edge); } -static int add_vertex(struct graph * graph, - uint64_t addr) +static struct vertex * add_vertex(struct graph * graph, + uint64_t addr) { struct vertex * vertex; struct list_head * p; vertex = malloc(sizeof(*vertex)); if (vertex == NULL) - return -1; + return NULL; list_head_init(&vertex->next); list_head_init(&vertex->edges); @@ -130,7 +130,7 @@ static int add_vertex(struct graph * graph, graph->nr_vertices++; - return 0; + return vertex; } static void del_vertex(struct graph * graph, @@ -206,7 +206,8 @@ int graph_add_edge(struct graph * graph, v = find_vertex_by_addr(graph, s_addr); if (v == NULL) { - if (add_vertex(graph, s_addr)) { + v = add_vertex(graph, s_addr); + if (v == NULL) { pthread_mutex_unlock(&graph->lock); return -ENOMEM; } @@ -221,7 +222,8 @@ int graph_add_edge(struct graph * graph, nb = find_vertex_by_addr(graph, d_addr); if (nb == NULL) { - if (add_vertex(graph, d_addr)) { + nb = add_vertex(graph, d_addr); + if (nb == NULL) { pthread_mutex_unlock(&graph->lock); return -ENOMEM; } diff --git a/src/ipcpd/normal/routing.c b/src/ipcpd/normal/routing.c index b750ca84..998b294a 100644 --- a/src/ipcpd/normal/routing.c +++ b/src/ipcpd/normal/routing.c @@ -291,12 +291,12 @@ static void * rib_listener(void * o) } } - while (rib_event_wait(routing.set, routing.queue, NULL)) { + while (rib_event_wait(routing.set, routing.queue, NULL) == 0) { flag = rqueue_next(routing.queue, path); if (flag < 0) continue; - if (read_fso(children[i], flag)) { + if (read_fso(path, flag)) { log_err("Failed to parse FSO."); continue; } 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 |