Hi Daniel,

Thanks for your reply.

On 8 January 2015 at 15:15, Daniel-Constantin Mierla <miconda@gmail.com> wrote:
Hi Charles,

perhaps Olle can give more details about how he is running it. I was on an irc-like chat with him reporting and testing, as I wanted to see if there is anything that can be fixed before building v4.2.2.


Will try to investigate further.
 
On the other hand, not initializong peer_list and dmq_init_callback_done to NULL and accessing them without check is exposing at list the problem from destroy() function. Kamailio calls destroy even if the module was not initialized. Not initializing dmq_init_callback_done at declaration to NULL results in a random value for it (C doesn't do implicit initialization), practically shm freeing an invalid pointer in destroy function.

 
Agreed - should be done anyway, regardless of whether it is related or not to the reported issue.

Best,
Charles




On 08/01/15 16:02, Charles Chance wrote:
Hi Daniel,

I was wondering, did you find some way in which this was causing the issue?

Theoretically, if the module is loaded successfully then peer_list cannot be null...

(dmq.c)

static int mod_init(void)
{
...
        /* load peer list - the list containing the module callbacks for dmq */
        peer_list = init_peer_list();
        if(peer_list==NULL) {
                LM_ERR("cannot initialize peer list\n");
                return -1;
        }
...

Also, peer_list should always contain the local notification peer, added during startup and prior to run_init_callbacks() ever being called:

...
        /**
         * add the dmq notification peer.
         * the dmq is a peer itself so that it can receive node notifications
         */
        if(add_notification_peer()<0) {
                LM_ERR("cannot add notification peer\n");
                return -1;
        }
...


Am I missing something obvious?

Best,
Charles


On 8 January 2015 at 13:21, Daniel-Constantin Mierla <miconda@gmail.com> wrote:
Module: kamailio
Branch: master
Commit: cc5f96f9c847d285085b0b9809ff0db76ea0a835
URL: https://github.com/kamailio/kamailio/commit/cc5f96f9c847d285085b0b9809ff0db76ea0a835

Author: Daniel-Constantin Mierla <miconda@gmail.com>
Committer: Daniel-Constantin Mierla <miconda@gmail.com>
Date: 2015-01-08T14:20:58+01:00

dmq: safety check for peer_list when calling the callbacks

- can result in crashing if it is not set
- reported by Olle E. Johansson

---

Modified: modules/dmq/notification_peer.c

---

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

---

diff --git a/modules/dmq/notification_peer.c b/modules/dmq/notification_peer.c
index 1d804bd..b493717 100644
--- a/modules/dmq/notification_peer.c
+++ b/modules/dmq/notification_peer.c
@@ -173,6 +173,10 @@ int extract_node_list(dmq_node_list_t* update_list, struct sip_msg* msg)
 int run_init_callbacks() {
        dmq_peer_t* crt;

+       if(peer_list==0) {
+               LM_WARN("peer list is null\n");
+               return 0;
+       }
        crt = peer_list->peers;
        while(crt) {
                if (crt->init_callback) {


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



www.sipcentric.com

Follow us on twitter @sipcentric

Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered office: Faraday Wharf, Innovation Birmingham Campus, Holt Street, Birmingham Science Park, Birmingham B7 4BB.


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

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

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



www.sipcentric.com

Follow us on twitter @sipcentric

Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered office: Faraday Wharf, Innovation Birmingham Campus, Holt Street, Birmingham Science Park, Birmingham B7 4BB.