diff --git a/src/mod/event_handlers/mod_erlang_event/ei_helpers.c b/src/mod/event_handlers/mod_erlang_event/ei_helpers.c index 6472180a2e..4608adc874 100644 --- a/src/mod/event_handlers/mod_erlang_event/ei_helpers.c +++ b/src/mod/event_handlers/mod_erlang_event/ei_helpers.c @@ -65,8 +65,6 @@ void ei_link(listener_t *listener, erlang_pid * from, erlang_pid * to) char *s; int index = 0; int status = SWITCH_STATUS_SUCCESS; - switch_socket_t *sock = NULL; - switch_os_sock_put(&sock, &listener->sockdes, listener->pool); index = 5; /* max sizes: */ ei_encode_version(msgbuf, &index); /* 1 */ @@ -81,12 +79,9 @@ void ei_link(listener_t *listener, erlang_pid * from, erlang_pid * to) put8(s, ERL_PASS_THROUGH); /* 1 */ /* sum: 542 */ - switch_mutex_lock(listener->sock_mutex); - status = switch_socket_send(sock, msgbuf, (switch_size_t *) &index); - if (status != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to link to process on %s\n", listener->peer_nodename); + if (write(listener->sockdes, msgbuf, index) == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to link to process on %s, status:%d\n", listener->peer_nodename, status); } - switch_mutex_unlock(listener->sock_mutex); } void ei_encode_switch_event_headers(ei_x_buff * ebuf, switch_event_t *event) diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index bd7bf8e26c..de95bd288b 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -973,7 +973,7 @@ static void listener_main_loop(listener_t *listener) int status = 1; int msgs_sent = 0; /* how many messages we sent in a loop */ - while ((status >= 0 || erl_errno == ETIMEDOUT || erl_errno == EAGAIN) && !prefs.done) { + while ((status >= 0 || erl_errno == ETIMEDOUT || erl_errno == EAGAIN || erl_errno == 0) && !prefs.done) { erlang_msg msg; ei_x_buff buf; ei_x_buff rbuf; @@ -1937,6 +1937,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_erlang_event_load) switch_application_interface_t *app_interface; switch_api_interface_t *api_interface; +#if (ERLANG_MAJOR == 10 && ERLANG_MINOR >= 3) || ERLANG_MAJOR >= 11 + ei_init(); +#endif + module_pool = pool; memset(&prefs, 0, sizeof(prefs));