notification service is using queryparam.
RI does not support parsing queryparam without interface and uri.
so, i already added function getValueFromquery.
this function is copy of RI Function(ExtractFiltersFromQuery) and then modified.
but, strtok_r function disappear tokenized string after performing from original string.
then, I duplicate string when the getValueFromQuery function is called.
Change-Id: I9c4b5a8d8e5e8dac8f65a9f5b875a0a7e1b7d723
Signed-off-by: jaesick.shin <jaesick.shin@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/8743
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
char * NSGetValueFromQuery(char *query, char * compareKey)
{
-
char *key = NULL;
char *value = NULL;
char *restOfQuery = NULL;
int numKeyValuePairsParsed = 0;
- if(!query || query[0] != '\0' || !strlen(query))
+ NS_LOG_V(INFO, "NS Query Params = %s", query);
+
+ if(!query || query[0] == '\0' || !strlen(query))
{
NS_LOG(ERROR, "query is null or \\0 or size is 0");
return NULL;
}
- NS_LOG_V(INFO, "NS Query Params = %s", query);
-
char *keyValuePair = strtok_r (query, NS_QUERY_SEPARATOR, &restOfQuery);
while(keyValuePair)
NSMessage * NSCreateMessage()\r
{\r
NS_LOG(DEBUG, "NSCreateMessage - IN");\r
-\r
pthread_mutex_lock(&nsInitMutex);\r
+\r
NSMessage * msg = NSInitializeMessage();\r
- msg->messageId = OICGetCurrentTime(TIME_IN_MS);\r
OICStrcpy(msg->providerId, UUID_STRING_SIZE, NSGetProviderInfo()->providerId);\r
- pthread_mutex_unlock(&nsInitMutex);\r
\r
+ pthread_mutex_unlock(&nsInitMutex);\r
NS_LOG(DEBUG, "NSCreateMessage - OUT");\r
return msg;\r
}\r
OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
NSConsumer * consumer = (NSConsumer *)OICMalloc(sizeof(NSConsumer));\r
\r
- char * consumerId = NSGetValueFromQuery(request->query, NS_QUERY_CONSUMER_ID);\r
- if(!consumerId)\r
+ char * consumerId = NSGetValueFromQuery(OICStrdup(request->query),\r
+ NS_QUERY_CONSUMER_ID);\r
+\r
+ if(consumerId)\r
{\r
- NSFreeConsumer(consumer);\r
- NS_LOG(ERROR, "Consumer ID NULL");\r
- break;\r
+ OICStrcpy(consumer->consumerId, UUID_STRING_SIZE, consumerId);\r
+ NSSubscribeRequestCb(consumer);\r
}\r
\r
- OICStrcpy(consumer->consumerId, UUID_STRING_SIZE, consumerId);\r
- OICFree(consumerId);\r
-\r
- NSSubscribeRequestCb(consumer);\r
NSFreeConsumer(consumer);\r
NSFreeOCEntityHandlerRequest(request);\r
\r
OCRepPayloadSetUri(*msgPayload, NS_COLLECTION_MESSAGE_URI);
OCRepPayloadSetPropInt(*msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->messageId);
- OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_TITLE, msg->providerId);
+ OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_PROVIDER_ID, msg->providerId);
- NSDuplicateSetPropertyInt(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->type);
+ NSDuplicateSetPropertyInt(msgPayload, NS_ATTRIBUTE_TYPE, msg->type);
NSDuplicateSetPropertyInt(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->ttl);
NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_DATETIME, msg->dateTime);
NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_TITLE, msg->title);
{\r
NS_LOG(DEBUG, "NSHandleSubscription - IN");\r
\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+ char * id = NSGetValueFromQuery(OICStrdup(entityHandlerRequest->query), NS_QUERY_CONSUMER_ID);\r
\r
if(!id)\r
{\r
return;\r
}\r
\r
+ NS_LOG_V(DEBUG, "consumerId = %s", id);\r
if (resourceType == NS_RESOURCE_MESSAGE)\r
{\r
NS_LOG(DEBUG, "resourceType == NS_RESOURCE_MESSAGE");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
\r
- OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
- OICFree(id);\r
+ subData->id = id;\r
\r
subData->isWhite = false;\r
subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
\r
- OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
- OICFree(id);\r
+ subData->id = id;\r
\r
subData->isWhite = false;\r
subData->syncObId = entityHandlerRequest->obsInfo.obsId;\r
{\r
NS_LOG(DEBUG, "NSHandleUnsubscription - IN");\r
\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+ char * id = NSGetValueFromQuery(OICStrdup(entityHandlerRequest->query), NS_QUERY_CONSUMER_ID);\r
\r
if(!id)\r
{\r
\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
- OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
+ subData->id = id;\r
subData->isWhite = false;\r
subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
\r
\r
NS_LOG(DEBUG, "NSHandleUnsubscription - IN");\r
\r
- OICFree(id);\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
}\r
\r
return OC_EH_ERROR;\r
}\r
\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+ char * id = NSGetValueFromQuery(OICStrdup(entityHandlerRequest->query), NS_QUERY_CONSUMER_ID);\r
\r
if(!id)\r
{\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
\r
- OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
- OICFree(id);\r
+ subData->id = id;\r
+\r
subData->isWhite = true;\r
subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
\r
\r
NSSendResponse(id, accepted);\r
\r
- OICFree(id);\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
\r
NS_LOG(DEBUG, "NSSendSubscriptionResponse - OUT");\r