diff options
author | Bill Meier <wmeier@newsguy.com> | 2012-08-12 20:53:17 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2012-08-12 20:53:17 +0000 |
commit | 38b39b6b77262cd0276fe31905ab2d4c4b1f7a88 (patch) | |
tree | 65feb40a81977775171528114acda619a6403ccf /epan/reassemble.c | |
parent | 16b161df6a2f4acc040296fe8dc725bb4373a6f6 (diff) |
Add 'fragment_table_destroy()'
svn path=/trunk/; revision=44459
Diffstat (limited to 'epan/reassemble.c')
-rw-r--r-- | epan/reassemble.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/epan/reassemble.c b/epan/reassemble.c index d4862ec62a..c07a5c463e 100644 --- a/epan/reassemble.c +++ b/epan/reassemble.c @@ -32,8 +32,6 @@ #include <epan/reassemble.h> -#include <epan/emem.h> - #include <epan/dissectors/packet-dcerpc.h> typedef struct _fragment_key { @@ -324,6 +322,32 @@ fragment_table_init(GHashTable **fragment_table) } } +/* + * Destroy a fragment table. + */ +void +frgment_table_destroy(GHashTable **fragment_table) +{ + if (*fragment_table != NULL) { + /* + * The fragment hash table exists. + * + * Remove all entries and free fragment data for each entry. + * + * The keys are freed by calling fragment_free_key() + * and the values are freed in free_all_fragments(). + * + * free_all_fragments() + * will free the address data associated with the key + */ + g_hash_table_foreach_remove(*fragment_table, + free_all_fragments, NULL); + + g_hash_table_destroy(*fragment_table); + *fragment_table = NULL; + } +} + void dcerpc_fragment_table_init(GHashTable **fragment_table) { |