return NULL;
}
+ // check the method type of request info.
+ // Keep this check in sync with CAMethod_t
+ switch (rep->method)
+ {
+ case CA_GET:
+ case CA_POST:
+ case CA_PUT:
+ case CA_DELETE:
+ break;
+ default:
+ OIC_LOG_V(ERROR, TAG, "Method %u is invalid", rep->method);
+ return NULL;
+ }
+
// allocate the request info structure.
CARequestInfo_t *clone = (CARequestInfo_t *) OICMalloc(sizeof(CARequestInfo_t));
if (!clone)
switch (rep->result)
{
case CA_EMPTY:
- case CA_SUCCESS:
case CA_CREATED:
case CA_DELETED:
case CA_VALID:
case CA_BAD_OPT:
case CA_FORBIDDEN_REQ:
case CA_NOT_FOUND:
+ case CA_METHOD_NOT_ALLOWED:
case CA_NOT_ACCEPTABLE:
case CA_REQUEST_ENTITY_INCOMPLETE:
case CA_REQUEST_ENTITY_TOO_LARGE:
case CA_INTERNAL_SERVER_ERROR:
+ case CA_NOT_IMPLEMENTED:
+ case CA_BAD_GATEWAY:
+ case CA_SERVICE_UNAVAILABLE:
case CA_RETRANSMIT_TIMEOUT:
+ case CA_PROXY_NOT_SUPPORTED:
break;
-
default:
OIC_LOG_V(ERROR, TAG, "Response code %u is invalid", rep->result);
return NULL;
//Do not free clone. we cannot declare it const, as the content is modified
if ((info->token) && (0 < info->tokenLength))
{
- char *temp = NULL;
-
// allocate token field
uint8_t len = info->tokenLength;
- temp = (char *) OICMalloc(len * sizeof(char));
+ char *temp = (char *) OICMalloc(len * sizeof(char));
if (!temp)
{
OIC_LOG(ERROR, TAG, "CACloneInfo Out of memory");
- return CA_MEMORY_ALLOC_FAILED;
+ goto exit;
}
memcpy(temp, info->token, len);
if (!clone->options)
{
OIC_LOG(ERROR, TAG, "CACloneInfo Out of memory");
- CADestroyInfoInternal(clone);
- return CA_MEMORY_ALLOC_FAILED;
+ goto exit;
}
memcpy(clone->options, info->options, sizeof(CAHeaderOption_t) * info->numOptions);
clone->numOptions = info->numOptions;
}
+ memcpy(&(clone->identity), &(info->identity), sizeof(info->identity));
+
if ((info->payload) && (0 < info->payloadSize))
{
// allocate payload field
if (!temp)
{
OIC_LOG(ERROR, TAG, "CACloneInfo Out of memory");
- CADestroyInfoInternal(clone);
- return CA_MEMORY_ALLOC_FAILED;
+ goto exit;
}
memcpy(temp, info->payload, info->payloadSize);
if (!temp)
{
OIC_LOG(ERROR, TAG, "CACloneInfo Out of memory");
- CADestroyInfoInternal(clone);
- return CA_MEMORY_ALLOC_FAILED;
+ goto exit;
}
// save the resourceUri
clone->resourceUri = temp;
}
+#ifdef ROUTING_GATEWAY
+ clone->skipRetransmission = info->skipRetransmission;
+#endif
+
clone->messageId = info->messageId;
clone->type = info->type;
return CA_STATUS_OK;
+exit:
+ CADestroyInfoInternal(clone);
+ return CA_MEMORY_ALLOC_FAILED;
}