浏览代码

tm: prper timer cleanup of responses for rpc tm.t_uac_wait_block

Daniel-Constantin Mierla 4 年之前
父节点
当前提交
5a6a679985
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      src/modules/tm/rpc_uac.c

+ 5 - 3
src/modules/tm/rpc_uac.c

@@ -204,14 +204,16 @@ void tm_rpc_response_list_clean(unsigned int ticks, void *param)
 	ri1 = _tm_rpc_response_list->rlist;
 	while(ri1!=NULL) {
 		if(ri1->rtime < tnow - TM_RPC_RESPONSE_LIFETIME) {
+			LM_DBG("freeing item [%.*s]\n", ri1->ruid.len, ri1->ruid.s);
 			if(ri0 == NULL) {
 				_tm_rpc_response_list->rlist = ri1->next;
+				shm_free(ri1);
+				ri1 = _tm_rpc_response_list->rlist;
 			} else {
 				ri0->next = ri1->next;
+				shm_free(ri1);
+				ri1 = ri0->next;
 			}
-			LM_DBG("freeing item [%.*s]\n", ri1->ruid.len, ri1->ruid.s);
-			shm_free(ri1);
-			ri1 = ri0->next;
 		} else {
 			ri0 = ri1;
 			ri1 = ri1->next;