summaryrefslogtreecommitdiff
path: root/plugins/profinet/packet-pn-rt.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/profinet/packet-pn-rt.c')
-rw-r--r--plugins/profinet/packet-pn-rt.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/plugins/profinet/packet-pn-rt.c b/plugins/profinet/packet-pn-rt.c
index 3c43197a6a..cfbfcd3ab2 100644
--- a/plugins/profinet/packet-pn-rt.c
+++ b/plugins/profinet/packet-pn-rt.c
@@ -342,21 +342,18 @@ static void
pnio_defragment_init(void)
{
guint32 i;
-
- if ( reasembled_frag_table != NULL ) {
- g_hash_table_destroy( reasembled_frag_table );
- reasembled_frag_table = NULL;
- }
-
for (i=0; i < 16; i++) /* init the reasemble help array */
start_frag_OR_ID[i] = 0;
-
reassembly_table_init(&pdu_reassembly_table,
&addresses_reassembly_table_functions);
- if (reasembled_frag_table == NULL)
- {
- reasembled_frag_table = g_hash_table_new(NULL, NULL);
- }
+ reasembled_frag_table = g_hash_table_new(NULL, NULL);
+}
+
+static void
+pnio_defragment_cleanup(void)
+{
+ g_hash_table_destroy(reasembled_frag_table);
+ reassembly_table_destroy(&pdu_reassembly_table);
}
/* possibly dissect a FRAG_PDU related PN-RT packet */
@@ -988,6 +985,7 @@ proto_register_pn_rt(void)
init_pn (proto_pn_rt);
register_init_routine(pnio_defragment_init);
+ register_cleanup_routine(pnio_defragment_cleanup);
}