From 1f34710f24c7565a2200090907477e62160b3067 Mon Sep 17 00:00:00 2001 From: skarg Date: Sat, 17 Dec 2005 22:37:16 +0000 Subject: [PATCH] Changed the APDU handler to handle freeing the transactions even when there is a custom handler being used. --- bacnet-stack/apdu.c | 7 +++---- bacnet-stack/handlers.c | 4 ---- bacnet-stack/ports/linux/main.c | 11 +++++++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/bacnet-stack/apdu.c b/bacnet-stack/apdu.c index 9958e5bd..c620ae48 100644 --- a/bacnet-stack/apdu.c +++ b/bacnet-stack/apdu.c @@ -270,8 +270,7 @@ void apdu_handler( src, invoke_id); } - else - tsm_free_invoke_id(invoke_id); + tsm_free_invoke_id(invoke_id); break; default: break; @@ -319,8 +318,7 @@ void apdu_handler( src, &service_ack_data); } - else - tsm_free_invoke_id(invoke_id); + tsm_free_invoke_id(invoke_id); break; default: break; @@ -331,6 +329,7 @@ void apdu_handler( case PDU_TYPE_REJECT: case PDU_TYPE_ABORT: invoke_id = apdu[1]; + /* FIXME: what about a way to let a client know? */ tsm_free_invoke_id(invoke_id); break; default: diff --git a/bacnet-stack/handlers.c b/bacnet-stack/handlers.c index 1f61550e..6d378b25 100644 --- a/bacnet-stack/handlers.c +++ b/bacnet-stack/handlers.c @@ -344,7 +344,6 @@ void ReadPropertyAckHandler( BACNET_READ_PROPERTY_DATA data; (void)src; - tsm_free_invoke_id(service_data->invoke_id); len = rp_ack_decode_service_request( service_request, service_len, @@ -558,7 +557,6 @@ void ReadPropertyHandler( return; } - void WritePropertyAckHandler( uint8_t *service_request, uint16_t service_len, @@ -569,7 +567,6 @@ void WritePropertyAckHandler( BACNET_WRITE_PROPERTY_DATA data; (void)src; - tsm_free_invoke_id(service_data->invoke_id); len = wp_ack_decode_service_request( service_request, service_len, @@ -846,7 +843,6 @@ void AtomicReadFileAckHandler( (void)src; // get the file instance from the tsm data before freeing it instance = bacfile_instance_from_tsm(service_data->invoke_id); - tsm_free_invoke_id(service_data->invoke_id); len = arf_ack_decode_service_request( service_request, service_len, diff --git a/bacnet-stack/ports/linux/main.c b/bacnet-stack/ports/linux/main.c index 4065c4ed..c3e2f054 100644 --- a/bacnet-stack/ports/linux/main.c +++ b/bacnet-stack/ports/linux/main.c @@ -242,10 +242,21 @@ static void print_address_cache(void) } } +static void print_tsm_stats(void) +{ + int idle = 0; + int total = 0; + + idle = tsm_transaction_idle_count(); + total = MAX_TSM_TRANSACTIONS; + fprintf(stderr,"TSM: %d idle of %d transactions\n",idle,total); +} + static void sig_handler(int signo) { datalink_cleanup(); print_address_cache(); + print_tsm_stats(); exit(0); }