Corrected cancellation request for SubscribeCOV decoding.

This commit is contained in:
skarg
2007-06-06 00:16:12 +00:00
parent 8207c3931b
commit 6a2f43712f
+27 -21
View File
@@ -365,27 +365,33 @@ int cov_subscribe_decode_service_request(uint8_t * apdu,
&data->monitoredObjectIdentifier.instance); &data->monitoredObjectIdentifier.instance);
data->monitoredObjectIdentifier.type = decoded_type; data->monitoredObjectIdentifier.type = decoded_type;
} else } else
return -1; return -1;
/* tag 2 - issueConfirmedNotifications - optional */ /* optional parameters - if missing, means cancellation */
if (decode_is_context_tag(&apdu[len], 2)) { if (len > apdu_len) {
data->cancellationRequest = false; /* tag 2 - issueConfirmedNotifications - optional */
len += if (decode_is_context_tag(&apdu[len], 2)) {
decode_tag_number_and_value(&apdu[len], &tag_number, data->cancellationRequest = false;
&len_value); len +=
data->issueConfirmedNotifications = decode_tag_number_and_value(&apdu[len], &tag_number,
decode_context_boolean(&apdu[len]); &len_value);
len += len_value; data->issueConfirmedNotifications =
} else decode_context_boolean(&apdu[len]);
data->cancellationRequest = true; len += len_value;
/* tag 3 - lifetime - optional */ } else {
if (decode_is_context_tag(&apdu[len], 3)) { data->cancellationRequest = true;
len += }
decode_tag_number_and_value(&apdu[len], &tag_number, /* tag 3 - lifetime - optional */
&len_value); if (decode_is_context_tag(&apdu[len], 3)) {
len += decode_unsigned(&apdu[len], len_value, &decoded_value); len +=
data->lifetime = decoded_value; decode_tag_number_and_value(&apdu[len], &tag_number,
} else &len_value);
data->lifetime = 0; len += decode_unsigned(&apdu[len], len_value, &decoded_value);
data->lifetime = decoded_value;
} else
data->lifetime = 0;
} else {
data->cancellationRequest = true;
}
} }
return len; return len;