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.
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.
Cheers,
Daniel
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(a)gmail.com <mailto:miconda@gmail.com>> wrote:
Module: kamailio
Branch: master
Commit: cc5f96f9c847d285085b0b9809ff0db76ea0a835
URL:
https://github.com/kamailio/kamailio/commit/cc5f96f9c847d285085b0b9809ff0db…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com
<mailto:miconda@gmail.com>>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com
<mailto: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/cc5f96f9c847d285085b0b9809ff0db…
Patch:
https://github.com/kamailio/kamailio/commit/cc5f96f9c847d285085b0b9809ff0db…
---
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(a)lists.sip-router.org <mailto:sr-dev@lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
--
*Charles Chance*
Managing Director
t. 0121 285 4400 m. 07932 063 891
www.sipcentric.com <http://www.sipcentric.com/>
Follow us on twitter @sipcentric <http://twitter.com/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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev