diff options
Diffstat (limited to 'src/core/socket.c')
| -rw-r--r-- | src/core/socket.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/src/core/socket.c b/src/core/socket.c index e19485a5..a7dfd07f 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -48,8 +48,9 @@ nni_reaper(void *arg) if ((pipe = nni_list_first(&sock->s_reaps)) != NULL) { nni_list_remove(&sock->s_reaps, pipe); if (pipe->p_id != 0) { - nni_idhash_remove(sock->s_pipes_by_id, - pipe->p_id); + nni_mtx_lock(nni_idlock); + nni_idhash_remove(nni_pipes, pipe->p_id); + nni_mtx_unlock(nni_idlock); } if (((ep = pipe->p_ep) != NULL) && @@ -236,15 +237,6 @@ nni_sock_open(nni_sock **sockp, uint16_t pnum) goto fail; } - if ((rv = nni_idhash_create(&sock->s_pipes_by_id)) != 0) { - goto fail; - } - // Pipe IDs are always positive values with the upper bit clear. - // Start the IDs at a random place to minimize chances of PIPE ID - // reuse improperly. - nni_idhash_set_limits(sock->s_pipes_by_id, 1, 0x7FFFFFFF, - nni_random() & 0x7FFFFFFF); - rv = nni_ev_init(&sock->s_recv_ev, NNG_EV_CAN_RECV, sock); if (rv != 0) { goto fail; @@ -303,7 +295,6 @@ fail: nni_ev_fini(&sock->s_recv_ev); nni_msgq_fini(sock->s_urq); nni_msgq_fini(sock->s_uwq); - nni_idhash_destroy(sock->s_pipes_by_id); nni_cv_fini(&sock->s_notify_cv); nni_cv_fini(&sock->s_cv); nni_mtx_fini(&sock->s_notify_mx); @@ -442,7 +433,6 @@ nni_sock_close(nni_sock *sock) nni_msgq_fini(sock->s_uwq); nni_ev_fini(&sock->s_send_ev); nni_ev_fini(&sock->s_recv_ev); - nni_idhash_destroy(sock->s_pipes_by_id); nni_cv_fini(&sock->s_notify_cv); nni_cv_fini(&sock->s_cv); nni_mtx_fini(&sock->s_notify_mx); |
