projects
/
platform
/
upstream
/
iotivity.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
replace : iotivity -> iotivity-sec
[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
3be4a73
..
46afb69
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;} }
@@
-211,7
+211,7
@@
OCServerRequest * GetServerRequestUsingToken (const CAToken_t token, uint8_t tok
return out;
}
}
return out;
}
}
- OIC_LOG(
ERROR
, TAG, "Server Request not found!!");
+ OIC_LOG(
INFO
, TAG, "Server Request not found!!");
return NULL;
}
return NULL;
}
@@
-222,12
+222,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
+244,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
+254,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
+293,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)
{
@@
-306,7
+307,7
@@
OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
}
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
+316,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
+343,7
@@
OCStackResult AddServerRequest (OCServerRequest ** request, uint16_t coapID,
exit:
if (serverRequest)
{
exit:
if (serverRequest)
{
+ OICFree(serverRequest->requestToken);
OICFree(serverRequest);
serverRequest = NULL;
}
OICFree(serverRequest);
serverRequest = NULL;
}
@@
-442,7
+443,9
@@
CAResponseResult_t ConvertEHResultToCAResult (OCEntityHandlerResult result, OCMe
case OC_EH_SLOW: // 2.05
caResult = CA_CONTENT;
break;
case OC_EH_SLOW: // 2.05
caResult = CA_CONTENT;
break;
- case OC_EH_OK: // 2.04/2.05
+ case OC_EH_OK:
+ case OC_EH_CHANGED: // 2.04
+ case OC_EH_CONTENT: // 2.05
if (method == OC_REST_POST || method == OC_REST_PUT)
{
caResult = CA_CHANGED;
if (method == OC_REST_POST || method == OC_REST_PUT)
{
caResult = CA_CHANGED;
@@
-455,9
+458,6
@@
CAResponseResult_t ConvertEHResultToCAResult (OCEntityHandlerResult result, OCMe
case OC_EH_VALID: // 2.03
caResult = CA_VALID;
break;
case OC_EH_VALID: // 2.03
caResult = CA_VALID;
break;
- case OC_EH_CHANGED: // 2.04
- caResult = CA_CHANGED;
- break;
// Unsuccessful Client Request
case OC_EH_UNAUTHORIZED_REQ: // 4.01
caResult = CA_UNAUTHORIZED_REQ;
// Unsuccessful Client Request
case OC_EH_UNAUTHORIZED_REQ: // 4.01
caResult = CA_UNAUTHORIZED_REQ;
@@
-480,9
+480,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;
@@
-512,7
+524,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);
@@
-622,11
+639,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;
}
@@
-644,7
+663,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;
@@
-743,10
+762,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)
@@
-770,7
+787,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)
{
@@
-788,6
+805,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);
@@
-800,5
+818,6
@@
OCStackResult HandleAggregateResponse(OCEntityHandlerResponse * ehResponse)
}
}
exit:
}
}
exit:
+
return stackRet;
}
return stackRet;
}