From 0407f06dab9fc19f1543da9e5e3b43d8ed65df18 Mon Sep 17 00:00:00 2001 From: Yamin Al-Mousa Date: Wed, 7 Jan 2015 10:14:10 -0800 Subject: [PATCH] Fixing OCCancel with High_QOS in observe isn't deleting CB. (Bug IOT-126) Calling OCCancel should result in deleting all associated structures including callbacks. This also should happen when we deregister observation. Change-Id: I34dd67288873ce27919a12a1d5fe244ef80751b7 Signed-off-by: Yamin Al-Mousa (cherry picked from commit bd3dd4b91f1bca31402240052199f2557ad1d055) Reviewed-on: https://gerrit.iotivity.org/gerrit/202 Tested-by: jenkins-iotivity Reviewed-by: Sudarshan Prasad --- resource/examples/simpleclientHQ.cpp | 4 ++-- resource/src/InProcClientWrapper.cpp | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/resource/examples/simpleclientHQ.cpp b/resource/examples/simpleclientHQ.cpp index f26a919..56ca45a 100644 --- a/resource/examples/simpleclientHQ.cpp +++ b/resource/examples/simpleclientHQ.cpp @@ -75,11 +75,11 @@ void onObserve(const HeaderOptions headerOptions, const OCRepresentation& rep, if(eCode == SUCCESS_RESPONSE) { std::cout << "OBSERVE RESULT:"<sequenceNumber; - if(clientResponse->result == OC_STACK_OK) { parseServerHeaderOptions(clientResponse, serverHeaderOptions); @@ -653,6 +652,10 @@ namespace OC std::thread exec(context->callback, serverHeaderOptions, attrs, clientResponse->result, sequenceNumber); exec.detach(); + if(sequenceNumber == OC_OBSERVE_DEREGISTER) + { + return OC_STACK_DELETE_TRANSACTION; + } return OC_STACK_KEEP_TRANSACTION; } -- 2.7.4