Module: kamailio
Branch: 4.4
Commit: 3ef7c98b352adba67aec25cbb99a0efa8da25600
URL: 
https://github.com/kamailio/kamailio/commit/3ef7c98b352adba67aec25cbb99a0efa8da25600

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2016-09-08T14:55:34+02:00

evapi: fixed the communication with dispatcher after initializing it as rpc 
worker

(cherry picked from commit 72580f250a2322ac1d5e71a92826fd8b11225b04)

---

Modified: modules/evapi/evapi_dispatch.c
Modified: modules/evapi/evapi_mod.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/3ef7c98b352adba67aec25cbb99a0efa8da25600.diff
Patch: 
https://github.com/kamailio/kamailio/commit/3ef7c98b352adba67aec25cbb99a0efa8da25600.patch

---

diff --git a/modules/evapi/evapi_dispatch.c b/modules/evapi/evapi_dispatch.c
index 502809b..846d650 100644
--- a/modules/evapi/evapi_dispatch.c
+++ b/modules/evapi/evapi_dispatch.c
@@ -221,6 +221,8 @@ int evapi_dispatch_notify(char *obuf, int olen)
                }
        }
 
+       LM_DBG("the message was sent to %d clients\n", n);
+
        return n;
 }
 
diff --git a/modules/evapi/evapi_mod.c b/modules/evapi/evapi_mod.c
index b922cac..ab4fa6f 100644
--- a/modules/evapi/evapi_mod.c
+++ b/modules/evapi/evapi_mod.c
@@ -51,6 +51,7 @@ static char *_evapi_bind_param = NULL;
 static int   _evapi_netstring_format_param = 1;
 
 static tm_api_t tmb;
+static int   _evapi_dispatcher_pid = -1;
 
 static int  mod_init(void);
 static int  child_init(int);
@@ -164,16 +165,24 @@ static int child_init(int rank)
        }
 
        if (rank!=PROC_MAIN) {
-               evapi_close_notify_sockets_parent();
+               if(_evapi_dispatcher_pid!=getpid()) {
+                       evapi_close_notify_sockets_parent();
+               }
                return 0;
        }
 
-       pid=fork_process(PROC_RPC, "EvAPI Dispatcher", 1);
+       pid=fork_process(PROC_NOCHLDINIT, "EvAPI Dispatcher", 1);
        if (pid<0)
                return -1; /* error */
        if(pid==0) {
                /* child */
+               _evapi_dispatcher_pid = getpid();
 
+               /* do child init to allow execution of rpc like functions */
+               if(init_child(PROC_RPC) < 0) {
+                       LM_DBG("failed to do RPC child init for dispatcher\n");
+                       return -1;
+               }
                /* initialize the config framework */
                if (cfg_child_init())
                        return -1;


_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to