diff options
Diffstat (limited to 'service/notification/src/provider/NSProviderTopic.c')
-rw-r--r-- | service/notification/src/provider/NSProviderTopic.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/service/notification/src/provider/NSProviderTopic.c b/service/notification/src/provider/NSProviderTopic.c index 9a6dee9a3..b745659fc 100644 --- a/service/notification/src/provider/NSProviderTopic.c +++ b/service/notification/src/provider/NSProviderTopic.c @@ -306,7 +306,13 @@ NSResult NSSendTopicList(OCEntityHandlerRequest * entityHandlerRequest) NS_LOG_V(DEBUG, "topicState = %d",(int) topics->state); payloadTopicArray[i] = OCRepPayloadCreate(); - NS_VERIFY_NOT_NULL(payloadTopicArray[i], NS_ERROR); + if (!payloadTopicArray[i]) + { + NS_LOG_V(ERROR, "payloadTopicArray[%d] is NULL", i); + NSOICFree(payloadTopicArray); + return; + } + OCRepPayloadSetPropString(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_NAME, topics->topicName); OCRepPayloadSetPropInt(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_SELECTION, @@ -403,7 +409,7 @@ NSResult NSPostConsumerTopics(OCEntityHandlerRequest * entityHandlerRequest) { NSCacheTopicSubData * topicSubData = (NSCacheTopicSubData *) OICMalloc( sizeof(NSCacheTopicSubData)); - NS_VERIFY_NOT_NULL(topicSubData, NS_FAIL); + NS_VERIFY_NOT_NULL_EXIT(topicSubData); OICStrcpy(topicSubData->id, NS_UUID_STRING_SIZE, consumerId); topicSubData->topicName = topicName; @@ -447,6 +453,10 @@ NSResult NSPostConsumerTopics(OCEntityHandlerRequest * entityHandlerRequest) NSOICFree(consumerId); NS_LOG(DEBUG, "NSPostConsumerTopics() - OUT"); return NS_OK; + +exit: + OICFree(topicListPayload); + return NS_FAIL; } void * NSTopicSchedule(void * ptr) @@ -497,7 +507,10 @@ void * NSTopicSchedule(void * ptr) if (NSProviderStorageWrite(consumerTopicList, newObj) == NS_OK) { + if(subData) + { NSSendTopicUpdationToConsumer(subData->id); + } topicSyncResult->result = NS_OK; } } |