Fixed NDPU comparison functions that were missing segment-ack PDU. (#991)
This commit is contained in:
@@ -29,6 +29,7 @@ The git repositories are hosted at the following sites:
|
||||
|
||||
### Fixed
|
||||
|
||||
* Fixed NDPU comparison functions that were missing segment-ack PDU. (#991)
|
||||
* Fixed WriteProperty NULL bypass which is only for present-value property
|
||||
of commandable objects. (#984)
|
||||
* Fixed the ghost Device ID 0 in the I-Am response when the actual
|
||||
|
||||
@@ -264,6 +264,7 @@ static bool dlmstp_compare_data_expecting_reply(const uint8_t *request_pdu,
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -274,7 +275,8 @@ static bool dlmstp_compare_data_expecting_reply(const uint8_t *request_pdu,
|
||||
}
|
||||
/* these services don't have service choice included */
|
||||
if ((reply.pdu_type != PDU_TYPE_REJECT) &&
|
||||
(reply.pdu_type != PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type != PDU_TYPE_ABORT) &&
|
||||
(reply.pdu_type != PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.service_choice != reply.service_choice) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -265,6 +265,7 @@ static bool dlmstp_compare_data_expecting_reply(const uint8_t *request_pdu,
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -275,7 +276,8 @@ static bool dlmstp_compare_data_expecting_reply(const uint8_t *request_pdu,
|
||||
}
|
||||
/* these services don't have service choice included */
|
||||
if ((reply.pdu_type != PDU_TYPE_REJECT) &&
|
||||
(reply.pdu_type != PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type != PDU_TYPE_ABORT) &&
|
||||
(reply.pdu_type != PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.service_choice != reply.service_choice) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+3
-1
@@ -488,6 +488,7 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -495,7 +496,8 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
debug_printf("DLMSTP: DER Compare failed: "
|
||||
"Invoke ID mismatch.\n");
|
||||
|
||||
@@ -526,6 +526,7 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -533,7 +534,8 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
debug_printf("DLMSTP: DER Compare failed: "
|
||||
"Invoke ID mismatch.\n");
|
||||
|
||||
@@ -489,6 +489,7 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -496,7 +497,8 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
debug_printf("DLMSTP: DER Compare failed: "
|
||||
"Invoke ID mismatch.\n");
|
||||
|
||||
@@ -471,6 +471,7 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -478,7 +479,8 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
debug_printf("DLMSTP: DER Compare failed: "
|
||||
"Invoke ID mismatch.\n");
|
||||
|
||||
@@ -586,6 +586,7 @@ static bool mstp_compare_data_expecting_reply(uint8_t *request_pdu,
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -596,7 +597,8 @@ static bool mstp_compare_data_expecting_reply(uint8_t *request_pdu,
|
||||
}
|
||||
/* these services don't have service choice included */
|
||||
if ((reply.pdu_type != PDU_TYPE_REJECT) &&
|
||||
(reply.pdu_type != PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type != PDU_TYPE_ABORT) &&
|
||||
(reply.pdu_type != PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.service_choice != reply.service_choice) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -594,6 +594,7 @@ static bool mstp_compare_data_expecting_reply(uint8_t *request_pdu,
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -604,7 +605,8 @@ static bool mstp_compare_data_expecting_reply(uint8_t *request_pdu,
|
||||
}
|
||||
/* these services don't have service choice included */
|
||||
if ((reply.pdu_type != PDU_TYPE_REJECT) &&
|
||||
(reply.pdu_type != PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type != PDU_TYPE_ABORT) &&
|
||||
(reply.pdu_type != PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.service_choice != reply.service_choice) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -377,6 +377,7 @@ bool dlmstp_compare_data_expecting_reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -384,7 +385,8 @@ bool dlmstp_compare_data_expecting_reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -364,6 +364,7 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -371,7 +372,8 @@ static bool dlmstp_compare_data_expecting_reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -200,6 +200,7 @@ static bool MSTP_Compare_Data_Expecting_Reply(
|
||||
break;
|
||||
case PDU_TYPE_REJECT:
|
||||
case PDU_TYPE_ABORT:
|
||||
case PDU_TYPE_SEGMENT_ACK:
|
||||
reply.invoke_id = reply_pdu[offset + 1];
|
||||
break;
|
||||
default:
|
||||
@@ -207,7 +208,8 @@ static bool MSTP_Compare_Data_Expecting_Reply(
|
||||
}
|
||||
/* these don't have service choice included */
|
||||
if ((reply.pdu_type == PDU_TYPE_REJECT) ||
|
||||
(reply.pdu_type == PDU_TYPE_ABORT)) {
|
||||
(reply.pdu_type == PDU_TYPE_ABORT) ||
|
||||
(reply.pdu_type == PDU_TYPE_SEGMENT_ACK)) {
|
||||
if (request.invoke_id != reply.invoke_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user