In callbacks for GET, PUT, POST, and OBSERVE requests in
InProcClientWrapper.cpp (CPP layer of RI), the representation was parsed
only for success cases.
But when we are dealing with cloud responses,
they include a payload with error message and code even for error cases.
To catch those responses, we should ignore the status(OCStackResult)
of client response and let the error representation reach till application.
Change-Id: I103957bb79e948693807fc05e8bed461e6b2d8dd
Signed-off-by: Senthil Kumar G S <senthil.gs@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/12831
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Reviewed-by: Abhishek Pandey <abhi.siso@samsung.com>
Reviewed-by: Ziran Sun <ziran.sun@samsung.com>
(cherry picked from commit
664340cc8b5c22d3441f11c34df2b5f3d1b8eff3)
Reviewed-on: https://gerrit.iotivity.org/gerrit/13211
Reviewed-by: Harish Marappa <h.marappa@samsung.com>
Reviewed-by: Ashok Babu Channa <ashok.channa@samsung.com>
OCRepresentation rep;
HeaderOptions serverHeaderOptions;
OCStackResult result = clientResponse->result;
OCRepresentation rep;
HeaderOptions serverHeaderOptions;
OCStackResult result = clientResponse->result;
- if (result == OC_STACK_OK)
+
+ parseServerHeaderOptions(clientResponse, serverHeaderOptions);
+ try
- parseServerHeaderOptions(clientResponse, serverHeaderOptions);
- try
- {
- rep = parseGetSetCallback(clientResponse);
- }
- catch(OC::OCException& e)
- {
- result = e.code();
- }
+ rep = parseGetSetCallback(clientResponse);
+ }
+ catch(OC::OCException& e)
+ {
+ result = e.code();
}
std::thread exec(context->callback, serverHeaderOptions, rep, result);
}
std::thread exec(context->callback, serverHeaderOptions, rep, result);
HeaderOptions serverHeaderOptions;
OCStackResult result = clientResponse->result;
HeaderOptions serverHeaderOptions;
OCStackResult result = clientResponse->result;
- if (OC_STACK_OK == result ||
- OC_STACK_RESOURCE_CREATED == result ||
- OC_STACK_RESOURCE_DELETED == result ||
- OC_STACK_RESOURCE_CHANGED == result)
+
+ parseServerHeaderOptions(clientResponse, serverHeaderOptions);
+ try
- parseServerHeaderOptions(clientResponse, serverHeaderOptions);
- try
- {
- attrs = parseGetSetCallback(clientResponse);
- }
- catch(OC::OCException& e)
- {
- result = e.code();
- }
+ attrs = parseGetSetCallback(clientResponse);
+ }
+ catch(OC::OCException& e)
+ {
+ result = e.code();
}
std::thread exec(context->callback, serverHeaderOptions, attrs, result);
}
std::thread exec(context->callback, serverHeaderOptions, attrs, result);
static_cast<ClientCallbackContext::DeleteContext*>(ctx);
HeaderOptions serverHeaderOptions;
static_cast<ClientCallbackContext::DeleteContext*>(ctx);
HeaderOptions serverHeaderOptions;
- if (clientResponse->result == OC_STACK_OK)
- {
- parseServerHeaderOptions(clientResponse, serverHeaderOptions);
- }
+ parseServerHeaderOptions(clientResponse, serverHeaderOptions);
+
std::thread exec(context->callback, serverHeaderOptions, clientResponse->result);
exec.detach();
return OC_STACK_DELETE_TRANSACTION;
std::thread exec(context->callback, serverHeaderOptions, clientResponse->result);
exec.detach();
return OC_STACK_DELETE_TRANSACTION;
HeaderOptions serverHeaderOptions;
uint32_t sequenceNumber = clientResponse->sequenceNumber;
OCStackResult result = clientResponse->result;
HeaderOptions serverHeaderOptions;
uint32_t sequenceNumber = clientResponse->sequenceNumber;
OCStackResult result = clientResponse->result;
- if (clientResponse->result == OC_STACK_OK)
+
+ parseServerHeaderOptions(clientResponse, serverHeaderOptions);
+ try
- parseServerHeaderOptions(clientResponse, serverHeaderOptions);
- try
- {
- attrs = parseGetSetCallback(clientResponse);
- }
- catch(OC::OCException& e)
- {
- result = e.code();
- }
+ attrs = parseGetSetCallback(clientResponse);
+ catch(OC::OCException& e)
+ {
+ result = e.code();
+ }
+
std::thread exec(context->callback, serverHeaderOptions, attrs,
result, sequenceNumber);
exec.detach();
std::thread exec(context->callback, serverHeaderOptions, attrs,
result, sequenceNumber);
exec.detach();