Hi Daniel,

        I am using async module to continue the transaction in
asynchronously. But I am observing a leak in shared memory. Then i checked
the code, we are not freeing the async_item_t  after calling t_continue.
Same this has checked with MEMDBG=1. 

Original code:
while(1) {
         lock_get(&_async_list_head->ring[slot].lock);
         ai = _async_list_head->ring[slot].lstart;
         if(ai!=NULL)
                 _async_list_head->ring[slot].lstart = ai->next;
         lock_release(&_async_list_head->ring[slot].lock);

         if(ai==NULL)
                 break;
         if(ai->act!=NULL)
                 tmb.t_continue(ai->tindex, ai->tlabel, ai->act);
 }


Changed code:

while(1) {
         lock_get(&_async_list_head->ring[slot].lock);
         ai = _async_list_head->ring[slot].lstart;
         if(ai!=NULL)
                 _async_list_head->ring[slot].lstart = ai->next;
         lock_release(&_async_list_head->ring[slot].lock);

         if(ai==NULL)
                 break;
         if(ai->act!=NULL)
                {
                 tmb.t_continue(ai->tindex, ai->tlabel, ai->act);
                        shm_free(ai); /* Added by surendra */
                }
 }

Please correct this if I am wrong.


Regards
@surendra




_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to