Module: kamailio Branch: master Commit: 27495c7c34bf963e403c0f711daf9b76076d2ec3 URL: https://github.com/kamailio/kamailio/commit/27495c7c34bf963e403c0f711daf9b76...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2015-12-29T23:39:18+01:00
tm: silent mode when freeing transactions at shutdown
- they are still linked in tm hash table as it should be, so no warn message for that case
---
Modified: modules/tm/h_table.c Modified: modules/tm/h_table.h
---
Diff: https://github.com/kamailio/kamailio/commit/27495c7c34bf963e403c0f711daf9b76... Patch: https://github.com/kamailio/kamailio/commit/27495c7c34bf963e403c0f711daf9b76...
---
diff --git a/modules/tm/h_table.c b/modules/tm/h_table.c index 5aee155..105230c 100644 --- a/modules/tm/h_table.c +++ b/modules/tm/h_table.c @@ -115,7 +115,7 @@ unsigned int transaction_count( void )
-void free_cell_helper( struct cell* dead_cell, const char *fname, unsigned int fline ) +void free_cell_helper(tm_cell_t* dead_cell, int silent, const char *fname, unsigned int fline ) { char *b; int i; @@ -126,8 +126,10 @@ void free_cell_helper( struct cell* dead_cell, const char *fname, unsigned int f LM_DBG("freeing transaction %p from %s:%u\n", dead_cell, fname, fline);
if(dead_cell->prev_c!=NULL && dead_cell->next_c!=NULL) { - LM_WARN("removed cell %p is still linked in hash table (%s:%u)\n", + if(likely(silent==0)) { + LM_WARN("removed cell %p is still linked in hash table (%s:%u)\n", dead_cell, fname, fline); + } unlink_timers(dead_cell); remove_from_hash_table_unsafe(dead_cell); } @@ -437,7 +439,7 @@ void free_hash_table( ) /* delete all synonyms at hash-collision-slot i */ clist_foreach_safe(&_tm_table->entries[i], p_cell, tmp_cell, next_c){ - free_cell(p_cell); + free_cell_silent(p_cell); } } shm_free(_tm_table); diff --git a/modules/tm/h_table.h b/modules/tm/h_table.h index 7cda34e..0cbe24c 100644 --- a/modules/tm/h_table.h +++ b/modules/tm/h_table.h @@ -553,8 +553,9 @@ struct s_table* tm_get_table(void); struct s_table* init_hash_table(void); void free_hash_table(void);
-void free_cell_helper( struct cell* dead_cell, const char *fname, unsigned int fline); -#define free_cell(t) free_cell_helper((t), __FILE__, __LINE__) +void free_cell_helper(tm_cell_t* dead_cell, int silent, const char *fname, unsigned int fline); +#define free_cell(t) free_cell_helper((t), 0, __FILE__, __LINE__) +#define free_cell_silent(t) free_cell_helper((t), 1, __FILE__, __LINE__)
struct cell* build_cell( struct sip_msg* p_msg );