1
0
Fork 0

web_backend: protect jwt cache with a mutex

This commit is contained in:
Weiyi Wang 2018-09-17 14:28:58 -04:00
parent 77c1f647cb
commit f3d59556ef
2 changed files with 4 additions and 1 deletions

View File

@ -24,6 +24,7 @@ Client::JWTCache Client::jwt_cache{};
Client::Client(const std::string& host, const std::string& username, const std::string& token) Client::Client(const std::string& host, const std::string& username, const std::string& token)
: host(host), username(username), token(token) { : host(host), username(username), token(token) {
std::lock_guard<std::mutex> lock(jwt_cache.mutex);
if (username == jwt_cache.username && token == jwt_cache.token) { if (username == jwt_cache.username && token == jwt_cache.token) {
jwt = jwt_cache.jwt; jwt = jwt_cache.jwt;
} }
@ -116,6 +117,7 @@ void Client::UpdateJWT() {
if (result.result_code != Common::WebResult::Code::Success) { if (result.result_code != Common::WebResult::Code::Success) {
LOG_ERROR(WebService, "UpdateJWT failed"); LOG_ERROR(WebService, "UpdateJWT failed");
} else { } else {
std::lock_guard<std::mutex> lock(jwt_cache.mutex);
jwt_cache.username = username; jwt_cache.username = username;
jwt_cache.token = token; jwt_cache.token = token;
jwt_cache.jwt = jwt = result.returned_data; jwt_cache.jwt = jwt = result.returned_data;

View File

@ -5,7 +5,7 @@
#pragma once #pragma once
#include <functional> #include <functional>
#include <future> #include <mutex>
#include <string> #include <string>
#include <tuple> #include <tuple>
#include <httplib.h> #include <httplib.h>
@ -81,6 +81,7 @@ private:
std::unique_ptr<httplib::Client> cli; std::unique_ptr<httplib::Client> cli;
struct JWTCache { struct JWTCache {
std::mutex mutex;
std::string username; std::string username;
std::string token; std::string token;
std::string jwt; std::string jwt;