Skip to content

Commit 052ef5f

Browse files
authored
move init response buffer to validateRequest() function (#93)
Init response Buffer only if we have a possible Request
1 parent f051380 commit 052ef5f

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/ModbusSlave.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,6 @@ uint8_t Modbus::poll()
253253
return 0;
254254
}
255255

256-
// Prepare the output buffer.
257-
memset(_responseBuffer, 0, MODBUS_MAX_BUFFER);
258-
_responseBuffer[MODBUS_ADDRESS_INDEX] = _requestBuffer[MODBUS_ADDRESS_INDEX];
259-
_responseBuffer[MODBUS_FUNCTION_CODE_INDEX] = _requestBuffer[MODBUS_FUNCTION_CODE_INDEX];
260-
_responseBufferLength = MODBUS_FRAME_SIZE;
261-
262256
// If communication is not enabled, skip processing
263257
if (!_enabled)
264258
{
@@ -716,6 +710,12 @@ bool Modbus::validateRequest()
716710
return false;
717711
}
718712

713+
// Prepare the output buffer.
714+
memset(_responseBuffer, 0, MODBUS_MAX_BUFFER);
715+
_responseBuffer[MODBUS_ADDRESS_INDEX] = _requestBuffer[MODBUS_ADDRESS_INDEX];
716+
_responseBuffer[MODBUS_FUNCTION_CODE_INDEX] = _requestBuffer[MODBUS_FUNCTION_CODE_INDEX];
717+
_responseBufferLength = MODBUS_FRAME_SIZE;
718+
719719
// report_illegal_function after the CRC check, cheaper
720720
if (report_illegal_function)
721721
{
@@ -1036,7 +1036,7 @@ uint16_t Modbus::reportException(uint8_t exceptionCode)
10361036
*
10371037
* @return The calculated CRC as an unsigned 16 bit integer.
10381038
*/
1039-
1039+
10401040
#ifndef CRC_LTABLE_CALC
10411041

10421042
uint16_t Modbus::calculateCRC(uint8_t *buffer, int length)

0 commit comments

Comments
 (0)