1. Remove versioing option settings for application/cbor format.
2. Correct default versioing number value.
Change-Id: Ia9a5f1edfc834a450106eefc4097c60726e4d740
Signed-off-by: Ziran Sun <ziran.sun@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/18167
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-by: Todd Malsbary <todd.malsbary@intel.com>
OIC_LOG(ERROR, TAG, "Format option not created");
return CA_STATUS_INVALID_PARAM;
}
- else
+ int ret = coap_insert(optlist, encodeNode, CAOrderOpts);
+ if (0 >= ret)
{
- int ret = coap_insert(optlist, encodeNode, CAOrderOpts);
- if (0 >= ret)
- {
- coap_delete(encodeNode);
- OIC_LOG(ERROR, TAG, "Format option not inserted in header");
- return CA_STATUS_INVALID_PARAM;
- }
+ coap_delete(encodeNode);
+ OIC_LOG(ERROR, TAG, "Format option not inserted in header");
+ return CA_STATUS_INVALID_PARAM;
}
- if (COAP_OPTION_ACCEPT_VERSION == versionOption ||
- COAP_OPTION_CONTENT_VERSION == versionOption)
+ if ((COAP_OPTION_ACCEPT_VERSION == versionOption ||
+ COAP_OPTION_CONTENT_VERSION == versionOption) &&
+ CA_FORMAT_APPLICATION_VND_OCF_CBOR == format)
{
versionNode = CACreateNewOptionNode(versionOption,
coap_encode_var_bytes(versionBuf, version), (char *) versionBuf);
coap_delete(encodeNode);
return CA_STATUS_INVALID_PARAM;
}
- }
- if (versionNode)
- {
- int ret = coap_insert(optlist, versionNode, CAOrderOpts);
+ ret = coap_insert(optlist, versionNode, CAOrderOpts);
if (0 >= ret)
{
coap_delete(versionNode);
{
if (2 == COAP_OPT_LENGTH(option))
{
- outInfo->payloadVersion = coap_decode_var_bytes(COAP_OPT_VALUE(option), COAP_OPT_LENGTH(option));
+ outInfo->payloadVersion = coap_decode_var_bytes(COAP_OPT_VALUE(option),
+ COAP_OPT_LENGTH(option));
}
else
{
{
if (2 == COAP_OPT_LENGTH(option))
{
- outInfo->acceptVersion = coap_decode_var_bytes(COAP_OPT_VALUE(option), COAP_OPT_LENGTH(option));
+ outInfo->acceptVersion = coap_decode_var_bytes(COAP_OPT_VALUE(option),
+ COAP_OPT_LENGTH(option));
}
else
{
else if (2 == COAP_OPT_LENGTH(option))
{
outInfo->acceptFormat = CAConvertFormat(
- coap_decode_var_bytes(COAP_OPT_VALUE(option), COAP_OPT_LENGTH(option)));
+ coap_decode_var_bytes(COAP_OPT_VALUE(option),
+ COAP_OPT_LENGTH(option)));
}
else
{
'../../../../logger/include',
'../../../../include',
'../../../../stack/include',
+ '../../../../connectivity/api',
'../../../../security/include',
'../../../../../../extlibs/boost/boost',
'../../../../../oc_logger/include',
#include <stdlib.h>
#include <string.h>
#include <signal.h>
+#include "cacommon.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
{
// Re-initiate discovery with OIC format. This is applicable for the case that
// a OCF 1.x client speaks to a OIC 1.1 server.
- InitDiscovery(OC_LOW_QOS, 1);
+ InitDiscovery(OC_LOW_QOS, 0);
return OC_STACK_KEEP_TRANSACTION;
}
memset(options, 0, sizeof(OCHeaderOption) * MAX_HEADER_OPTIONS);
size_t numOptions = 0;
- uint8_t option0[] = {0};
- uint16_t optionID = 2049;
- size_t optionDataSize = sizeof(option0);
- OCSetHeaderOption(options, &numOptions, optionID, option0, optionDataSize);
+ uint16_t format = COAP_MEDIATYPE_APPLICATION_VND_OCF_CBOR;
+ uint16_t optionID = CA_OPTION_ACCEPT;
+ OCSetHeaderOption(options, &numOptions, optionID, &format, sizeof(format));
- uint8_t option1[] = {0};
- optionID = 2053;
- optionDataSize = sizeof(option1);
- OCSetHeaderOption(options, &numOptions, optionID, option1, optionDataSize);
+ uint16_t version = 2048;
+ optionID = CA_OPTION_ACCEPT_VERSION;
+ numOptions = 1;
+ OCSetHeaderOption(options, &numOptions, optionID, &version, sizeof(version));
ret = OCDoRequest(NULL, OC_REST_DISCOVER, szQueryUri, NULL, 0, CT_DEFAULT,
(qos == OC_HIGH_QOS) ? OC_HIGH_QOS : OC_LOW_QOS,
}
else
{
- InitDiscovery(OC_LOW_QOS, 0);
+ InitDiscovery(OC_LOW_QOS, 1);
}
// Break from loop with Ctrl+C
{
responseInfo.info.payloadFormat = CA_FORMAT_APPLICATION_CBOR;
}
- if (!serverRequest->acceptVersion)
+ if ((OC_FORMAT_VND_OCF_CBOR == serverRequest->acceptFormat))
{
- serverRequest->acceptVersion = DEFAULT_VERSION_VALUE;
+ // Add versioning information for this format
+ responseInfo.info.payloadVersion = serverRequest->acceptVersion;
+ if (!responseInfo.info.payloadVersion)
+ {
+ responseInfo.info.payloadVersion = DEFAULT_VERSION_VALUE;
+ }
+
}
- responseInfo.info.payloadVersion = serverRequest->acceptVersion;
}
break;
default:
}
#endif
- uint16_t acceptVersion = OC_SPEC_VERSION_VALUE;
+ uint16_t acceptVersion = 0;
CAPayloadFormat_t acceptFormat = CA_FORMAT_APPLICATION_CBOR;
// Check settings of version option and content format.
if (requestInfo->info.numOptions > 0 && requestInfo->info.options)
}
}
- requestInfo->info.acceptVersion = acceptVersion;
requestInfo->info.acceptFormat = acceptFormat;
+ if (CA_FORMAT_APPLICATION_VND_OCF_CBOR == acceptFormat)
+ {
+ if (!acceptVersion)
+ {
+ requestInfo->info.acceptVersion = OC_SPEC_VERSION_VALUE;
+ }
+ else
+ {
+ requestInfo->info.acceptVersion = acceptVersion;
+ }
+ }
CAResult_t result = CASendRequest(object, requestInfo);
- if(CA_STATUS_OK != result)
+ if (CA_STATUS_OK != result)
{
OIC_LOG_V(ERROR, TAG, "CASendRequest failed with CA error %u", result);
OIC_TRACE_END();
}
serverRequest.acceptFormat = CAToOCPayloadFormat(requestInfo->info.acceptFormat);
+ if (OC_FORMAT_VND_OCF_CBOR == serverRequest.acceptFormat)
+ {
+ serverRequest.acceptVersion = requestInfo->info.acceptVersion;
+ }
if (requestInfo->info.type == CA_MSG_CONFIRM)
{
serverRequest.qos = OC_HIGH_QOS;
if (payload)
{
- uint16_t payloadVersion = OC_SPEC_VERSION_VALUE;
+ uint16_t payloadVersion = 0;
CAPayloadFormat_t payloadFormat = CA_FORMAT_APPLICATION_CBOR;
- // From OCF onwards, check version option settings
+ // Check version option settings
if (numOptions > 0 && options)
{
for (uint8_t i = 0; i < numOptions; i++)
}
}
- requestInfo.info.payloadVersion = payloadVersion;
requestInfo.info.payloadFormat = payloadFormat;
-
- if((result =
+ if (CA_FORMAT_APPLICATION_VND_OCF_CBOR == payloadFormat)
+ {
+ if (!payloadVersion)
+ {
+ requestInfo.info.payloadVersion = OC_SPEC_VERSION_VALUE;
+ }
+ else
+ {
+ requestInfo.info.payloadVersion = payloadVersion;
+ }
+ }
+ if ((result =
OCConvertPayload(payload, CAToOCPayloadFormat(requestInfo.info.payloadFormat),
- &requestInfo.info.payload, &requestInfo.info.payloadSize))
+ &requestInfo.info.payload, &requestInfo.info.payloadSize))
!= OC_STACK_OK)
{
OIC_LOG(ERROR, TAG, "Failed to create CBOR Payload");