mirror of
https://github.com/stargieg/bacnet-stack
synced 2025-10-26 23:35:52 +08:00
When a packet is received which expects a reply a copy is stored in the PDU ring buffer so it can be matched with the reply. Unfortunately when the reply is received it is only checked against the first entry in the ring buffer. This can cause a failure if a second packet expecting a reply has been received while waiting for the first reply to arrive.
This is a known issue in the bacnet-stack open source stack, and there is a outstanding FIXME in the latest version of the source code:
/* The ANSWER_DATA_REQUEST state is entered when a */
/* BACnet Data Expecting Reply, a Test_Request, or */
/* a proprietary frame that expects a reply is received. */
/* FIXME: MSTP_Get_Reply waits for a matching reply, but
if the next queued message doesn't match, then we
sit here for Treply_delay doing nothing */
The fix for this is to check all the messages in the PDU queue to see if any of them match, and if one does then handle it in the normal way. Thank you to Ian Smith of Abelon Systems Ltd. for the patch!
|
||
|---|---|---|
| .. | ||
| arduino_uno | ||
| arm7 | ||
| at91sam7s | ||
| atmega8 | ||
| atmega168 | ||
| bdk-atxx4-mstp | ||
| bsd | ||
| dos | ||
| linux | ||
| lwip | ||
| pic18f97j60 | ||
| pic18f6720 | ||
| rtos32 | ||
| rx62n | ||
| stm32f10x | ||
| win32 | ||
| xplained | ||