<p>oh, sorry for the chaos.</p>

<p>here it is:</p>

<h4>bt_AFTER_patch.corefile</h4>

<pre><code>(gdb) frame 3
#3  0x00007fe5d724f9ea in free_pipe_cmd (cmd=0x7fe5dca4a1d0) at jsonrpc_io.c:551
551                     shm_free(cmd->method);
(gdb) l
546
547
548     void free_pipe_cmd(struct jsonrpc_pipe_cmd *cmd)
549     {
550             if (cmd->method)
551                     shm_free(cmd->method);
552             if (cmd->params)
553                     shm_free(cmd->params);
554             if (cmd->cb_route)
555                     shm_free(cmd->cb_route);
</code></pre>

<h4>below is my current diff between patched jsonrpc_io.c and 4.3.1 stable ( jsonrpc_io.c.orig )</h4>

<pre><code>--- jsonrpc_io.c.orig   2015-07-20 21:16:25.000000000 +0800
+++ jsonrpc_io.c    2015-08-26 13:25:24.628835993 +0800
@@ -85,8 +85,7 @@

    if (!connect_servers(server_group))
    {
-       LM_ERR("failed to connect to any servers\n");
-       return -1;
+       LM_WARN("failed to connect to any servers\n");
    }

    event_dispatch();
@@ -163,7 +162,7 @@

    if (!payload) {
        LM_ERR("Failed to build jsonrpc_request_t (method: %s, params: %s)\n", cmd->method, cmd->params);
-       return;
+       goto error;
    }
    char *json = (char*)json_object_get_string(payload);

@@ -201,7 +200,7 @@

        if (timerfd == -1) {
            LM_ERR("Could not create timerfd.");
-           return;
+           goto error;
        }

        req->timerfd = timerfd;
@@ -215,7 +214,7 @@
        if (timerfd_settime(timerfd, 0, itime, NULL) == -1)
        {
            LM_ERR("Could not set timer.");
-           return;
+           goto error;
        }
        pkg_free(itime);
        struct event *timer_ev = pkg_malloc(sizeof(struct event));
@@ -223,7 +222,7 @@
        event_set(timer_ev, timerfd, EV_READ, timeout_cb, req);
        if(event_add(timer_ev, NULL) == -1) {
            LM_ERR("event_add failed while setting request timer (%s).", strerror(errno));
-           return;
+           goto error;
        }
        req->timer_ev = timer_ev;
    } else if (!sent) {
@@ -237,6 +236,10 @@

    pkg_free(ns);
    json_object_put(payload);
+   if (cmd->notify_only) free_pipe_cmd(cmd);
+error:
+   if (cmd->notify_only) free_pipe_cmd(cmd);
+   return;
 }

 void socket_cb(int fd, short event, void *arg)
@@ -338,6 +341,7 @@

        struct jsonrpc_server *server = pkg_malloc(sizeof(struct jsonrpc_server));
        CHECK_MALLOC(server);
+       memset(server, 0, sizeof(struct jsonrpc_server));
        char *h = pkg_malloc(strlen(host)+1);
        CHECK_MALLOC(h);

@@ -365,6 +369,7 @@

            selected_group = pkg_malloc(sizeof(struct jsonrpc_server_group));
            CHECK_MALLOC(selected_group);
+           memset(selected_group, 0, sizeof(struct jsonrpc_server_group));
            selected_group->priority = priority;
            selected_group->next_server = server;


</code></pre>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href="https://github.com/kamailio/kamailio/issues/296#issuecomment-135039373">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AF36ZaUF9pCjYOP0GmSBXaV_5z4cZwbSks5orcP6gaJpZM4Fw0dn.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/kamailio/kamailio/issues/296#issuecomment-135039373"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>