From d50eb50566cc22792588ed7365a8084566f8680f Mon Sep 17 00:00:00 2001 From: Erich Keane Date: Tue, 18 Nov 2014 14:23:14 -0800 Subject: [PATCH] Fixed bug where InvalidParam exception thrown on re-observe Observing a resource more than once isn't allowed. However, we were not clearing the "Observation Handle" on observation cancel. This patch resets the observe handle to nullptr when cancelling observation so that we can re-observe after cancelling. Change-Id: I507a427e641ad08c5e48e2dea4c5b7b3d0e3a79b Signed-off-by: Erich Keane --- resource/src/OCResource.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/resource/src/OCResource.cpp b/resource/src/OCResource.cpp index b3062e9..8f094b3 100644 --- a/resource/src/OCResource.cpp +++ b/resource/src/OCResource.cpp @@ -243,8 +243,16 @@ OCStackResult OCResource::cancelObserve(QualityOfService QoS) return result_guard(OC_STACK_INVALID_PARAM); } - return checked_guard(m_clientWrapper.lock(), &IClientWrapper::CancelObserveResource, + OCStackResult result = checked_guard(m_clientWrapper.lock(), + &IClientWrapper::CancelObserveResource, m_observeHandle, m_host, m_uri, m_headerOptions, QoS); + + if(result == OC_STACK_OK) + { + m_observeHandle = nullptr; + } + + return result; } std::string OCResource::host() const -- 2.7.4