Changed the APDU handler to handle freeing the transactions even when there is a custom handler being used.

This commit is contained in:
skarg
2005-12-17 22:37:16 +00:00
parent 9a9d072e14
commit 1f34710f24
3 changed files with 14 additions and 8 deletions
+3 -4
View File
@@ -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:
-4
View File
@@ -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,
+11
View File
@@ -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);
}