projects
/
platform
/
upstream
/
iotivity.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update snapshot(2018-01-04)
[platform/upstream/iotivity.git]
/
resource
/
csdk
/
stack
/
src
/
ocserverrequest.c
diff --git
a/resource/csdk/stack/src/ocserverrequest.c
b/resource/csdk/stack/src/ocserverrequest.c
index
8c825e4
..
91d7e1c
100644
(file)
--- a/
resource/csdk/stack/src/ocserverrequest.c
+++ b/
resource/csdk/stack/src/ocserverrequest.c
@@
-36,8
+36,8
@@
#include "cacommon.h"
#include "cainterface.h"
#include "cacommon.h"
#include "cainterface.h"
-#include
"utlist.h"
-#include
"pdu.h"
+#include
<coap/utlist.h>
+#include
<coap/pdu.h>
// Module Name
#define VERIFY_NON_NULL(arg) { if (!arg) {OIC_LOG(FATAL, TAG, #arg " is NULL"); goto exit;} }
// Module Name
#define VERIFY_NON_NULL(arg) { if (!arg) {OIC_LOG(FATAL, TAG, #arg " is NULL"); goto exit;} }
@@
-102,6
+102,7
@@
static void DeleteServerRequest(OCServerRequest * serverRequest)
{
LL_DELETE(serverRequestList, serverRequest);
OICFree(serverRequest->requestToken);
{
LL_DELETE(serverRequestList, serverRequest);
OICFree(serverRequest->requestToken);
+ OICFree(serverRequest->rcvdVendorSpecificHeaderOptions);
OICFree(serverRequest);
serverRequest = NULL;
OIC_LOG(INFO, TAG, "Server Request Removed!!");
OICFree(serverRequest);
serverRequest = NULL;
OIC_LOG(INFO, TAG, "Server Request Removed!!");
@@
-202,16
+203,20
@@
OCServerRequest * GetServerRequestUsingToken (const CAToken_t token, uint8_t tok
OIC_LOG(INFO, TAG,"Get server request with token");
OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)token, tokenLength);
OIC_LOG(INFO, TAG,"Get server request with token");
OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)token, tokenLength);
- OIC_LOG(INFO, TAG,"Found token");
+ OIC_LOG(INFO, TAG,
"Found token");
LL_FOREACH (serverRequestList, out)
{
LL_FOREACH (serverRequestList, out)
{
- OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)out->requestToken, tokenLength);
- if(memcmp(out->requestToken, token, tokenLength) == 0)
+ if(out)
{
{
- return out;
+ OIC_LOG_BUFFER(INFO, TAG, (const uint8_t *)out->requestToken, out->tokenLength);
+ if((tokenLength == out->tokenLength) &&
+ memcmp(out->requestToken, token, tokenLength) == 0)
+ {
+ return out;
+ }
}
}
}
}
- OIC_LOG(
ERROR
, TAG, "Server Request not found!!");
+ OIC_LOG(
INFO
, TAG, "Server Request not found!!");
return NULL;
}
return NULL;
}
@@
-222,12
+227,12
@@
OCServerRequest * GetServerRequestUsingToken (const CAToken_t token, uint8_t tok
* @return
* OCServerRequest*
*/
* @return
* OCServerRequest*
*/
-OCServerRequest * GetServerRequestUsingHandle (const OC
ServerRequest *
handle)
+OCServerRequest * GetServerRequestUsingHandle (const OC
RequestHandle
handle)
{
OCServerRequest * out = NULL;
LL_FOREACH (serverRequestList, out)
{
{
OCServerRequest * out = NULL;
LL_FOREACH (serverRequestList, out)
{
- if(out == handle)
+ if(out
->requestId
== handle)
{
return out;
}
{
return out;
}
@@
-244,7
+249,7
@@
OCServerRequest * GetServerRequestUsingHandle (const OCServerRequest * handle)
* @return
* OCServerResponse*
*/
* @return
* OCServerResponse*
*/
-OCServerResponse * GetServerResponseUsingHandle (const OC
ServerRequest *
handle)
+OCServerResponse * GetServerResponseUsingHandle (const OC
RequestHandle
handle)
{
OCServerResponse * out = NULL;
LL_FOREACH (serverResponseList, out)
{
OCServerResponse * out = NULL;
LL_FOREACH (serverResponseList, out)
@@
-254,7
+259,7
@@
OCServerResponse * GetServerResponseUsingHandle (const OCServerRequest * handle)
return out;
}
}
return out;
}
}
- OIC_LOG(
ERROR
, TAG, "Server Response not found!!");
+ OIC_LOG(
INFO
, TAG, "Server Response not found!!");
return NULL;
}
return NULL;
}
@@
-293,6
+298,7
@@
OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
serverRequest->acceptFormat = acceptFormat;
serverRequest->ehResponseHandler = HandleSingleResponse;
serverRequest->numResponses = 1;
serverRequest->acceptFormat = acceptFormat;
serverRequest->ehResponseHandler = HandleSingleResponse;
serverRequest->numResponses = 1;
+ serverRequest->requestId = OCGetRandom();
if(query)
{
if(query)
{
@@
-301,12
+307,16
@@
OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
if(rcvdVendorSpecificHeaderOptions)
{
if(rcvdVendorSpecificHeaderOptions)
{
+ serverRequest->rcvdVendorSpecificHeaderOptions =
+ (OCHeaderOption *) OICCalloc(numRcvdVendorSpecificHeaderOptions, sizeof(OCHeaderOption));
+ VERIFY_NON_NULL(serverRequest->rcvdVendorSpecificHeaderOptions);
+
memcpy(serverRequest->rcvdVendorSpecificHeaderOptions, rcvdVendorSpecificHeaderOptions,
memcpy(serverRequest->rcvdVendorSpecificHeaderOptions, rcvdVendorSpecificHeaderOptions,
-
MAX_HEADER_OPTIONS
* sizeof(OCHeaderOption));
+
numRcvdVendorSpecificHeaderOptions
* sizeof(OCHeaderOption));
}
if(payload && reqTotalSize)
{
}
if(payload && reqTotalSize)
{
- // destination is at least 1 greater than the source, so a NULL always exists in the
+
// destination is at least 1 greater than the source, so a NULL always exists in the
// last character
memcpy(serverRequest->payload, payload, reqTotalSize);
serverRequest->payloadSize = reqTotalSize;
// last character
memcpy(serverRequest->payload, payload, reqTotalSize);
serverRequest->payloadSize = reqTotalSize;
@@
-315,15
+325,14
@@
OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
serverRequest->requestComplete = 0;
if(requestToken)
{
serverRequest->requestComplete = 0;
if(requestToken)
{
- // If tokenLength is zero, the return value depends on the
- // particular library implementation (it may or may not be a null pointer).
+
// If tokenLength is zero, the return value depends on the
+
// particular library implementation (it may or may not be a null pointer).
if (tokenLength)
{
serverRequest->requestToken = (CAToken_t) OICMalloc(tokenLength);
VERIFY_NON_NULL(serverRequest->requestToken);
memcpy(serverRequest->requestToken, requestToken, tokenLength);
}
if (tokenLength)
{
serverRequest->requestToken = (CAToken_t) OICMalloc(tokenLength);
VERIFY_NON_NULL(serverRequest->requestToken);
memcpy(serverRequest->requestToken, requestToken, tokenLength);
}
-
}
serverRequest->tokenLength = tokenLength;
}
serverRequest->tokenLength = tokenLength;
@@
-343,6
+352,8
@@
OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
exit:
if (serverRequest)
{
exit:
if (serverRequest)
{
+ OICFree(serverRequest->requestToken);
+ OICFree(serverRequest->rcvdVendorSpecificHeaderOptions);
OICFree(serverRequest);
serverRequest = NULL;
}
OICFree(serverRequest);
serverRequest = NULL;
}
@@
-479,9
+490,21
@@
CAResponseResult_t ConvertEHResultToCAResult (OCEntityHandlerResult result, OCMe
case OC_EH_INTERNAL_SERVER_ERROR: // 5.00
caResult = CA_INTERNAL_SERVER_ERROR;
break;
case OC_EH_INTERNAL_SERVER_ERROR: // 5.00
caResult = CA_INTERNAL_SERVER_ERROR;
break;
+ case OC_EH_NOT_IMPLEMENTED: // 5.01
+ caResult = CA_NOT_IMPLEMENTED;
+ break;
+ case OC_EH_BAD_GATEWAY: // 5.02
+ caResult = CA_BAD_GATEWAY;
+ break;
+ case OC_EH_SERVICE_UNAVAILABLE: // 5.03
+ caResult = CA_SERVICE_UNAVAILABLE;
+ break;
case OC_EH_RETRANSMIT_TIMEOUT: // 5.04
caResult = CA_RETRANSMIT_TIMEOUT;
break;
case OC_EH_RETRANSMIT_TIMEOUT: // 5.04
caResult = CA_RETRANSMIT_TIMEOUT;
break;
+ case OC_EH_PROXY_NOT_SUPPORTED: // 5.05
+ caResult = CA_PROXY_NOT_SUPPORTED;
+ break;
default:
caResult = CA_BAD_REQ;
break;
default:
caResult = CA_BAD_REQ;
break;
@@
-511,7
+534,12
@@
OCStackResult HandleSingleResponse(OCEntityHandlerResponse * ehResponse)
return OC_STACK_ERROR;
}
return OC_STACK_ERROR;
}
- OCServerRequest *serverRequest = (OCServerRequest *)ehResponse->requestHandle;
+ OCServerRequest *serverRequest = GetServerRequestUsingHandle(ehResponse->requestHandle);
+ if (NULL == serverRequest)
+ {
+ OIC_LOG(ERROR, TAG, "No serverRequest matching with ehResponse");
+ return OC_STACK_ERROR;
+ }
CopyDevAddrToEndpoint(&serverRequest->devAddr, &responseEndpoint);
CopyDevAddrToEndpoint(&serverRequest->devAddr, &responseEndpoint);
@@
-621,11
+649,13
@@
OCStackResult HandleSingleResponse(OCEntityHandlerResponse * ehResponse)
// Put the JSON prefix and suffix around the payload
if(ehResponse->payload)
{
// Put the JSON prefix and suffix around the payload
if(ehResponse->payload)
{
+#ifdef WITH_PRESENCE
if (ehResponse->payload->type == PAYLOAD_TYPE_PRESENCE)
{
responseInfo.isMulticast = true;
}
else
if (ehResponse->payload->type == PAYLOAD_TYPE_PRESENCE)
{
responseInfo.isMulticast = true;
}
else
+#endif
{
responseInfo.isMulticast = false;
}
{
responseInfo.isMulticast = false;
}
@@
-643,7
+673,7
@@
OCStackResult HandleSingleResponse(OCEntityHandlerResponse * ehResponse)
OICFree(responseInfo.info.options);
return result;
}
OICFree(responseInfo.info.options);
return result;
}
- //Add CONTENT_FORMAT OPT if payload exist
+ //
Add CONTENT_FORMAT OPT if payload exist
if (responseInfo.info.payloadSize > 0)
{
responseInfo.info.payloadFormat = CA_FORMAT_APPLICATION_CBOR;
if (responseInfo.info.payloadSize > 0)
{
responseInfo.info.payloadFormat = CA_FORMAT_APPLICATION_CBOR;
@@
-742,10
+772,8
@@
OCStackResult HandleAggregateResponse(OCEntityHandlerResponse * ehResponse)
OIC_LOG(INFO, TAG, "Inside HandleAggregateResponse");
OIC_LOG(INFO, TAG, "Inside HandleAggregateResponse");
- OCServerRequest *serverRequest = GetServerRequestUsingHandle((OCServerRequest *)
- ehResponse->requestHandle);
- OCServerResponse *serverResponse = GetServerResponseUsingHandle((OCServerRequest *)
- ehResponse->requestHandle);
+ OCServerRequest *serverRequest = GetServerRequestUsingHandle(ehResponse->requestHandle);
+ OCServerResponse *serverResponse = GetServerResponseUsingHandle(ehResponse->requestHandle);
OCStackResult stackRet = OC_STACK_ERROR;
if(serverRequest)
OCStackResult stackRet = OC_STACK_ERROR;
if(serverRequest)
@@
-769,7
+797,7
@@
OCStackResult HandleAggregateResponse(OCEntityHandlerResponse * ehResponse)
goto exit;
}
goto exit;
}
- OCRepPayload *newPayload = OCRepPayloadClone((OCRepPayload *)ehResponse->payload);
+ OCRepPayload *newPayload = OCRepPayload
Batch
Clone((OCRepPayload *)ehResponse->payload);
if(!serverResponse->payload)
{
if(!serverResponse->payload)
{
@@
-787,6
+815,7
@@
OCStackResult HandleAggregateResponse(OCEntityHandlerResponse * ehResponse)
{
OIC_LOG(INFO, TAG, "This is the last response fragment");
ehResponse->payload = serverResponse->payload;
{
OIC_LOG(INFO, TAG, "This is the last response fragment");
ehResponse->payload = serverResponse->payload;
+ ehResponse->ehResult = OC_EH_OK;
stackRet = HandleSingleResponse(ehResponse);
//Delete the request and response
FindAndDeleteServerRequest(serverRequest);
stackRet = HandleSingleResponse(ehResponse);
//Delete the request and response
FindAndDeleteServerRequest(serverRequest);
@@
-799,5
+828,6
@@
OCStackResult HandleAggregateResponse(OCEntityHandlerResponse * ehResponse)
}
}
exit:
}
}
exit:
+
return stackRet;
}
return stackRet;
}