return OC_STACK_INVALID_PARAM;
}
- OCStackResult ret = BuildResponseRepresentation(collResource, &payload);
+ OCStackResult ret = BuildResponseRepresentation(collResource, &payload, &ehRequest->devAddr);
if (ret == OC_STACK_OK)
{
tempChildResource = collResource->rsrcChildResourcesHead;
{
//TODO : Add resource type filtering once collections
// start supporting queries.
- ret = BuildResponseRepresentation(temp, &payload);
+ ret = BuildResponseRepresentation(temp, &payload, &ehRequest->devAddr);
}
tempChildResource = tempChildResource->next;
}
OCStackResult BuildResponseRepresentation(const OCResource *resourcePtr,
- OCRepPayload** payload)
+ OCRepPayload** payload, OCDevAddr *devAddr)
{
OCRepPayload *tempPayload = OCRepPayloadCreate();
}
OCResourceProperty p = OCGetResourceProperties((OCResourceHandle *)resourcePtr);
- p = (OCResourceProperty) ((p & OC_DISCOVERABLE) | (p & OC_OBSERVABLE));
OCRepPayload *policy = OCRepPayloadCreate();
- OCRepPayloadSetPropInt(policy, OC_RSRVD_BITMAP, p);
+ if (!policy)
+ {
+ OCPayloadDestroy((OCPayload *)tempPayload);
+ return OC_STACK_NO_MEMORY;
+ }
+ OCRepPayloadSetPropInt(policy, OC_RSRVD_BITMAP, ((p & OC_DISCOVERABLE) | (p & OC_OBSERVABLE)));
+ if (p & OC_SECURE)
+ {
+ OCRepPayloadSetPropBool(policy, OC_RSRVD_SECURE, p & OC_SECURE);
+ uint16_t securePort = 0;
+ if (GetSecurePortInfo(devAddr, &securePort) != OC_STACK_OK)
+ {
+ securePort = 0;
+ }
+ OCRepPayloadSetPropInt(policy, OC_RSRVD_HOSTING_PORT, securePort);
+ }
OCRepPayloadSetPropObjectAsOwner(tempPayload, OC_RSRVD_POLICY, policy);
if(!*payload)
{
OCResource *resourcePtr = FindResourceByUri(OC_RSRVD_DEVICE_URI);
VERIFY_PARAM_NON_NULL(TAG, resourcePtr, "Device URI not found.");
- discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload);
+ discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload, &request->devAddr);
}
else if (virtualUriInRequest == OC_PLATFORM_URI)
{
OCResource *resourcePtr = FindResourceByUri(OC_RSRVD_PLATFORM_URI);
VERIFY_PARAM_NON_NULL(TAG, resourcePtr, "Platform URI not found.");
- discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload);
+ discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload, &request->devAddr);
}
#ifdef ROUTING_GATEWAY
else if (OC_GATEWAY_URI == virtualUriInRequest)