diff --git a/modules/rtpengine/rtpengine.c b/modules/rtpengine/rtpengine.c index 5fe83b06284..afb93159d70 100644 --- a/modules/rtpengine/rtpengine.c +++ b/modules/rtpengine/rtpengine.c @@ -1809,6 +1809,7 @@ static int build_rtpp_socks(unsigned int current_rtpp_no) { for (i = 0; i < rtpp_socks_size; i++) { if (rtpp_socks[i] >= 0) { close(rtpp_socks[i]); + rtpp_socks[i] = -1; } } @@ -1818,6 +1819,7 @@ static int build_rtpp_socks(unsigned int current_rtpp_no) { LM_ERR("no more pkg memory for rtpp_socks\n"); return -1; } + memset(rtpp_socks, -1, sizeof(int)*(rtpp_socks_size)); lock_get(rtpp_set_list->rset_head_lock); for (rtpp_list = rtpp_set_list->rset_first; rtpp_list != 0; @@ -1911,6 +1913,11 @@ child_init(int rank) if(!rtpp_set_list) return 0; + /* do not init sockets for PROC_INIT and main process when fork=yes */ + if(rank==PROC_INIT || (rank==PROC_MAIN && dont_fork==0)) { + return 0; + } + mypid = getpid(); lock_get(rtpp_no_lock); @@ -1921,6 +1928,7 @@ child_init(int rank) if (!rtpp_socks) { return -1; } + memset(rtpp_socks, -1, sizeof(int)*(rtpp_socks_size)); // vector of pointers to queried nodes queried_nodes_ptr = (struct rtpp_node**)pkg_malloc(queried_nodes_limit * sizeof(struct rtpp_node*));