Fix stopCaching logic in the RE client.
authorKIM JungYong <jyong2.kim@samsung.com>
Thu, 23 Mar 2017 08:59:45 +0000 (17:59 +0900)
committerUze Choi <uzchoi@samsung.com>
Fri, 24 Mar 2017 08:41:10 +0000 (08:41 +0000)
When caught exception at calling stopCaching(),
can not start caching again, reason that IsCaching boolean does not changed in RE client.

In this patch,
exception handling and disable IsCaching flag.

Change-Id: I80f4629d21ea16799f945c90d56f70f81bc38e90
Signed-off-by: KIM JungYong <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/18125
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
service/resource-encapsulation/src/resourceCache/src/ResourceCacheManager.cpp
service/resource-encapsulation/src/resourceClient/RCSRemoteResourceObject.cpp

index c57c7f0..7b0728c 100644 (file)
@@ -128,7 +128,16 @@ namespace OIC
 
             if (observeIns != observeCacheIDmap.end())
             {
-                (observeIns->second)->stopCache();
+                try
+                {
+                    (observeIns->second)->stopCache();
+                }
+                catch (...)
+                {
+                    (observeIns->second).reset();
+                    observeCacheIDmap.erase(observeIns);
+                    throw;
+                }
                 (observeIns->second).reset();
                 observeCacheIDmap.erase(observeIns);
                 return;
index 2f73a00..f592c0f 100644 (file)
@@ -332,7 +332,19 @@ namespace OIC
                 return;
             }
 
-            ResourceCacheManager::getInstance()->cancelResourceCache(m_cacheId);
+            try
+            {
+                ResourceCacheManager::getInstance()->cancelResourceCache(m_cacheId);
+            }
+            catch (const RCSInvalidParameterException &)
+            {
+                throw;
+            }
+            catch (...)
+            {
+                m_cacheId = 0;
+                throw;
+            }
             m_cacheId = 0;
         }