]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Add support for 'getpid'; a way to return the fake cnode process id on the FreeSWITCH...
authorAndrew Thompson <andrew@hijacked.us>
Thu, 13 Nov 2008 22:46:58 +0000 (22:46 +0000)
committerAndrew Thompson <andrew@hijacked.us>
Thu, 13 Nov 2008 22:46:58 +0000 (22:46 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10389 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c

index 8fc01d8436ef53b5d11b08a5e9160fbfda96a15b..51c2eaa13efc9ebb8b3f02f8b2756f6f10d76031 100644 (file)
@@ -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));