Slack: Handle 'account_inactive' error

This commit is contained in:
Jan Kaluza 2016-02-21 19:43:39 +01:00
parent a8128fde21
commit 5dd1aa90b4
3 changed files with 20 additions and 6 deletions

View file

@ -21,12 +21,7 @@ class HTTPRequest : public Thread {
HTTPRequest(ThreadPool *tp, Type type, const std::string &url, Callback callback);
HTTPRequest(Type type, const std::string &url);
virtual ~HTTPRequest() {
if(curlhandle) {
curl_easy_cleanup(curlhandle);
curlhandle = NULL;
}
}
virtual ~HTTPRequest();
void setProxy(std::string, std::string, std::string, std::string);
bool execute();

View file

@ -21,6 +21,14 @@ HTTPRequest::HTTPRequest(Type type, const std::string &url) {
init();
}
HTTPRequest::~HTTPRequest() {
if (curlhandle) {
LOG4CXX_INFO(logger, "Cleaning up CURL handle");
curl_easy_cleanup(curlhandle);
curlhandle = NULL;
}
}
bool HTTPRequest::init() {
curlhandle = curl_easy_init();
if (curlhandle) {
@ -85,6 +93,7 @@ bool HTTPRequest::GET(std::string url, std::string &data) {
LOG4CXX_ERROR(logger, "CURL not initialized!")
strcpy(curl_errorbuffer, "CURL not initialized!");
}
LOG4CXX_ERROR(logger, "Error fetching " << url);
return false;
}

View file

@ -188,6 +188,16 @@ void SlackRTM::handleRTMStart(HTTPRequest *req, bool ok, rapidjson::Document &re
return;
}
STORE_STRING_OPTIONAL(resp, error);
if (!error.empty()) {
if (error == "account_inactive") {
LOG4CXX_INFO(logger, "Account inactive, will not try connecting again");
m_pingTimer->stop();
m_client->disconnectServer();
return;
}
}
rapidjson::Value &url = resp["url"];
if (!url.IsString()) {
LOG4CXX_ERROR(logger, "No 'url' object in the reply.");