Skip to content

Commit 3fc74e5

Browse files
author
Sparky
authored
Use map and set instead of vector
1 parent ba66751 commit 3fc74e5

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

source/whitelist.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
#undef getaddrinfo
22

33
#include "socket.h"
4-
#include <vector>
4+
#include <map>
5+
#include <set>
56
#include <fstream>
67
#include <sstream>
78
#include <regex>
89

910
//Somewhere glua can't read?
1011
const char* whitelistDir = "../gm_socket_whitelist.txt";
11-
std::vector<std::pair<std::string, std::string> > whitelist;
12+
std::map<std::string, std::set<std::string> > whitelist;
1213

1314
enum : int
1415
{
@@ -28,7 +29,7 @@ int parseWhitelist()
2829
std::regex line_parser("([\\w\\.-]+)\\s+(\\d+)(?:(?:\r?\n)+|$)");
2930
for (std::regex_iterator<std::string::iterator> match = std::regex_iterator(filedata.begin(), filedata.end(), line_parser), end = std::regex_iterator<std::string::iterator>(); match != end; ++match)
3031
{
31-
whitelist.push_back(std::pair<std::string, std::string>(match->operator[](1).str(), match->operator[](2).str()));
32+
whitelist[match->operator[](1).str()].insert(match->operator[](2).str());
3233
}
3334
if (whitelist.empty())
3435
{
@@ -44,14 +45,8 @@ int parseWhitelist()
4445

4546
bool isSafe(const char* pNodeName, const char* pServiceName)
4647
{
47-
for(auto i = whitelist.begin(), end = whitelist.end(); i!=end; ++i)
48-
{
49-
if(i->first == pNodeName && i->second == pServiceName)
50-
{
51-
return true;
52-
}
53-
}
54-
return false;
48+
std::map<std::string, std::set<std::string> >::iterator domain = whitelist.find(pNodeName);
49+
return domain != whitelist.end() && domain->second.count(pServiceName)==1;
5550
}
5651

5752
extern "C" {

0 commit comments

Comments
 (0)