Delete Client callback when receive observe cancel response.
authorZiran Sun <ziran.sun@samsung.com>
Wed, 21 Sep 2016 10:02:23 +0000 (11:02 +0100)
committerZiran Sun <ziran.sun@samsung.com>
Mon, 26 Sep 2016 13:01:35 +0000 (13:01 +0000)
Bug: https://jira.iotivity.org/browse/IOT-1317
Change-Id: I4e5ef2a1c848b963c036efe4ddf73dfd76b2b262
Signed-off-by: Ziran Sun <ziran.sun@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/12055
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
resource/csdk/stack/include/internal/ocobserve.h
resource/csdk/stack/include/octypes.h
resource/src/InProcClientWrapper.cpp

index 1a98969..1477d05 100644 (file)
@@ -29,9 +29,6 @@
 #ifndef OC_OBSERVE_H
 #define OC_OBSERVE_H
 
-/** Sequence number is a 24 bit field, per https://tools.ietf.org/html/draft-ietf-core-observe-16.*/
-#define MAX_SEQUENCE_NUMBER              (0xFFFFFF)
-
 /** Maximum number of observers to reach */
 
 #define MAX_OBSERVER_FAILED_COMM         (2)
index 7fd01d8..7fc8300 100644 (file)
@@ -1017,6 +1017,12 @@ typedef void * OCRequestHandle;
 typedef uint8_t OCObservationId;
 
 /**
+ * Sequence number is a 24 bit field,
+ * per https://tools.ietf.org/html/rfc7641.
+ */
+#define MAX_SEQUENCE_NUMBER              (0xFFFFFF)
+
+/**
  * Action associated with observation.
  */
 typedef enum
index b5b2b37..7166e44 100644 (file)
@@ -1028,6 +1028,10 @@ namespace OC
         std::thread exec(context->callback, serverHeaderOptions, attrs,
                     result, sequenceNumber);
         exec.detach();
+        if (sequenceNumber == MAX_SEQUENCE_NUMBER + 1)
+        {
+            return OC_STACK_DELETE_TRANSACTION;
+        }
 
         return OC_STACK_KEEP_TRANSACTION;
     }