From e7a37e580e98ff6822fc8f7b6fcfea88c21054f5 Mon Sep 17 00:00:00 2001 From: Andrew Thompson Date: Thu, 13 Nov 2008 22:46:58 +0000 Subject: [PATCH] Add support for 'getpid'; a way to return the fake cnode process id on the FreeSWITCH side git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10389 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../event_handlers/mod_erlang_event/mod_erlang_event.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 8fc01d8436..51c2eaa13e 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 @@ -63,7 +63,7 @@ struct event_handler { struct listener { int sockfd; - const struct ei_cnode_s *ec; + struct ei_cnode_s *ec; erlang_pid log_pid; erlang_pid event_pid; switch_queue_t *event_queue; @@ -884,6 +884,10 @@ sendmsg_fail: switch_clear_flag_locked(listener, LFLAG_RUNNING); ei_x_encode_atom(rbuf, "ok"); goto event_done; + } else if (!strncmp(atom, "getpid", MAXATOMLEN)) { + ei_x_encode_tuple_header(rbuf, 2); + ei_x_encode_atom(rbuf, "ok"); + ei_x_encode_pid(rbuf, ei_self(listener->ec)); } else { ei_x_encode_tuple_header(rbuf, 2); ei_x_encode_atom(rbuf, "error"); @@ -1007,7 +1011,8 @@ static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_unlink\n"); break; case ERL_EXIT : - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_exit\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "erl_exit from %s <%d.%d.%d>\n", msg.from.node, msg.from.creation, msg.from.num, msg.from.serial); + /* TODO - check if this linked pid is any of the log/event handler processes and cleanup if it is. */ break; default : switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "unexpected msg type %d\n", (int)(msg.msgtype));