In modules/rtpengine/rtpengine_hash.c:

> +	}
> +	LM_DBG("rtpengine_hash_table size = %d\n", hash_table_size);
> +
> +	// init hashtable
> +	rtpengine_hash_table = shm_malloc(sizeof(struct rtpengine_hash_table));
> +	if (!rtpengine_hash_table) {
> +		LM_ERR("no shm left to create rtpengine_hash_table\n");
> +		return 0;
> +	}
> +
> +	// init hashtable entry_list
> +	rtpengine_hash_table->entry_list = shm_malloc(hash_table_size * sizeof(struct rtpengine_hash_entry));
> +
> +	// init hashtable entry_list[i] (head never filled)
> +	for (i = 0; i < hash_table_size; i++) {
> +		rtpengine_hash_table->entry_list[i] = shm_malloc(sizeof(struct rtpengine_hash_entry));

I don't think shm_malloc() automatically zeroes the memory, and the lookup routines seem to do a strcmp on the head entries call-ID too, so the call-ID needs to be initialized as well.


Reply to this email directly or view it on GitHub.