summaryrefslogtreecommitdiff
path: root/src/client/Client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/Client.cpp')
-rw-r--r--src/client/Client.cpp71
1 files changed, 56 insertions, 15 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp
index 97251e0..78a7e2e 100644
--- a/src/client/Client.cpp
+++ b/src/client/Client.cpp
@@ -121,7 +121,12 @@ void Client::Initialise(std::string proxyString)
}
if(proxyString.length())
- http_init((char*)proxyString.c_str());
+ {
+ char *proxy = new char[proxyString.length() + 1];
+ std::strcpy (proxy, proxyString.c_str());
+ http_init(proxy);
+ delete[] proxy;
+ }
else
http_init(NULL);
@@ -144,7 +149,14 @@ void Client::Initialise(std::string proxyString)
if(authUser.ID)
{
- http_auth_headers(versionCheckRequest, (char *)format::NumberToString<int>(authUser.ID).c_str(), NULL, (char *)authUser.SessionID.c_str());
+ std::string idTempString = format::NumberToString<int>(authUser.ID);
+ char *id = new char[idTempString.length() + 1];
+ std::strcpy (id, idTempString.c_str());
+ char *session = new char[authUser.SessionID.length() + 1];
+ std::strcpy (session, authUser.SessionID.c_str());
+ http_auth_headers(versionCheckRequest, id, NULL, session);
+ delete[] id;
+ delete[] session;
}
}
@@ -404,7 +416,12 @@ void Client::SetProxy(std::string proxy)
{
http_done();
if(proxy.length())
- http_init((char*)proxy.c_str());
+ {
+ char *tempproxy = new char[proxy.length() + 1];
+ std::strcpy (tempproxy, proxy.c_str());
+ http_init(tempproxy);
+ delete[] tempproxy;
+ }
else
http_init(NULL);
}
@@ -861,18 +878,24 @@ RequestStatus Client::UploadSave(SaveInfo & save)
}
char *saveName = new char[save.GetName().length() + 1];
- std::strcpy ( saveName, save.GetName().c_str() );
+ std::strcpy (saveName, save.GetName().c_str());
char *saveDescription = new char[save.GetDescription().length() + 1];
- std::strcpy ( saveDescription, save.GetDescription().c_str() );
+ std::strcpy (saveDescription, save.GetDescription().c_str());
+ char *userid = new char[userIDStream.str().length() + 1];
+ std::strcpy (userid, userIDStream.str().c_str());
+ char *session = new char[authUser.SessionID.length() + 1];
+ std::strcpy (session, authUser.SessionID.c_str());
char * postNames[] = { "Name", "Description", "Data:save.bin", "Publish", NULL };
char * postDatas[] = { saveName, saveDescription, gameData, (char *)(save.GetPublished()?"Public":"Private") };
int postLengths[] = { save.GetName().length(), save.GetDescription().length(), gameDataLength, save.GetPublished()?6:7 };
//std::cout << postNames[0] << " " << postDatas[0] << " " << postLengths[0] << std::endl;
- data = http_multipart_post("http://" SERVER "/Save.api", postNames, postDatas, postLengths, (char *)(userIDStream.str().c_str()), NULL, (char *)(authUser.SessionID.c_str()), &dataStatus, &dataLength);
+ data = http_multipart_post("http://" SERVER "/Save.api", postNames, postDatas, postLengths, userid, NULL, session, &dataStatus, &dataLength);
delete[] saveDescription;
delete[] saveName;
+ delete[] userid;
+ delete[] session;
}
else
{
@@ -998,7 +1021,7 @@ std::string Client::AddStamp(GameSave * saveData)
stampStream.write((const char *)gameData, gameDataLength);
stampStream.close();
- free(gameData);
+ delete gameData;
stampIDs.push_front(saveID.str());
@@ -1075,17 +1098,28 @@ RequestStatus Client::ExecVote(int saveID, int direction)
std::stringstream idStream;
idStream << saveID;
- std::string saveIDText = format::NumberToString<int>(saveID);
- std::string directionText = direction==1?"Up":"Down";
-
- std::string userIDText = format::NumberToString<int>(authUser.ID);
if(authUser.ID)
{
+ char * directionText = (char*)(direction==1?"Up":"Down");
+ std::string saveIDText = format::NumberToString<int>(saveID);
+ std::string userIDText = format::NumberToString<int>(authUser.ID);
+
+ char *id = new char[saveIDText.length() + 1];
+ std::strcpy (id, saveIDText.c_str());
+ char *userid = new char[userIDText.length() + 1];
+ std::strcpy (userid, userIDText.c_str());
+ char *session = new char[authUser.SessionID.length() + 1];
+ std::strcpy (session, authUser.SessionID.c_str());
+
char * postNames[] = { "ID", "Action", NULL };
- char * postDatas[] = { (char*)(saveIDText.c_str()), (char*)(directionText.c_str()) };
- int postLengths[] = { saveIDText.length(), directionText.length() };
+ char * postDatas[] = { id, directionText };
+ int postLengths[] = { saveIDText.length(), strlen(directionText) };
//std::cout << postNames[0] << " " << postDatas[0] << " " << postLengths[0] << std::endl;
- data = http_multipart_post("http://" SERVER "/Vote.api", postNames, postDatas, postLengths, (char *)(userIDText.c_str()), NULL, (char *)(authUser.SessionID.c_str()), &dataStatus, &dataLength);
+ data = http_multipart_post("http://" SERVER "/Vote.api", postNames, postDatas, postLengths, userid, NULL, session, &dataStatus, &dataLength);
+
+ delete[] id;
+ delete[] userid;
+ delete[] session;
}
else
{
@@ -1127,7 +1161,11 @@ unsigned char * Client::GetSaveData(int saveID, int saveDate, int & dataLength)
urlStream << "http://" << STATICSERVER << "/" << saveID << ".cps";
}
- data = (unsigned char *)http_simple_get((char *)urlStream.str().c_str(), &dataStatus, &dataLength);
+ char *url = new char[urlStream.str().length() + 1];
+ std::strcpy (url, urlStream.str().c_str());
+ data = (unsigned char *)http_simple_get(url, &dataStatus, &dataLength);
+ delete[] url;
+
if(data && dataStatus == 200)
{
return data;
@@ -1616,16 +1654,19 @@ SaveInfo * Client::GetSave(int saveID, int saveDate)
tempSave->Favourite = tempFavourite.Value();
tempSave->Views = tempViews.Value();
tempSave->Version = tempVersion.Value();
+ free(data);
return tempSave;
}
catch (json::Exception &e)
{
lastError = "Could not read response";
+ free(data);
return NULL;
}
}
else
{
+ if (data) free(data);
lastError = http_ret_text(dataStatus);
}
return NULL;