diff --git a/sinqhttpprot.c b/sinqhttpprot.c index 7df89a5..27434fc 100644 --- a/sinqhttpprot.c +++ b/sinqhttpprot.c @@ -35,7 +35,7 @@ static int configRequest(Ascon * a) pHttpProt pHttp = (pHttpProt) a->private; pDynString request; char *uri = NULL; - char *data, *pPtr, *path; + char *data, *pPtr, *path, *dataCopy; pHttp->node = NULL; ghttp_clean(pHttp->request); @@ -51,21 +51,25 @@ static int configRequest(Ascon * a) DynStringConcatChar(request, '/'); data = GetCharArray(a->wrBuffer); if(strstr(data,"node:") == data){ - path = strchr(data,':')+1; + dataCopy = strdup(data); + path = strchr(dataCopy,':')+1; uri = strchr(path,':'); *uri = '\0'; uri++; pHttp->node = FindHdbNode(NULL,path,pServ->dummyCon); DynStringConcat(request,uri); ghttp_set_type(pHttp->request, ghttp_type_get); + free(dataCopy); } else if(strstr(data,"post:") == data){ - uri = strchr(data,':') + 1; + dataCopy = strdup(data); + uri = strchr(dataCopy,':') + 1; pPtr = strchr(uri,':'); *pPtr = '\0'; ghttp_set_type(pHttp->request, ghttp_type_post); DynStringConcat(request,uri); pPtr++; - ghttp_set_body(pHttp->request,pPtr, strlen(pPtr)); + ghttp_set_body(pHttp->request,strdup(pPtr), strlen(pPtr)); + free(dataCopy); } else { ghttp_set_type(pHttp->request, ghttp_type_get); DynStringConcat(request, GetCharArray(a->wrBuffer)); @@ -134,7 +138,8 @@ static void handleReply(Ascon * a) } for(i = 0; i < len; i++){ pHttp->node->value.v.intArray[i] = htonl(hmData[i]); - } + } + NotifyHipadabaPar(pHttp->node,NULL); } } }