summaryrefslogtreecommitdiff
path: root/plexgdm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plexgdm.cpp')
-rw-r--r--plexgdm.cpp33
1 files changed, 15 insertions, 18 deletions
diff --git a/plexgdm.cpp b/plexgdm.cpp
index e76279d..b63363e 100644
--- a/plexgdm.cpp
+++ b/plexgdm.cpp
@@ -169,22 +169,19 @@ void plexgdm::discover()
for(std::map<std::string, std::string>::iterator it = vBuffer.begin(); it != vBuffer.end(); ++it) {
std::string host = it->first;
std::string data = it->second;
- bool flag = true;
- // Check for duplicates
- for(std::vector<PlexServer>::iterator s_it = m_vServers.begin(); s_it != m_vServers.end(); ++s_it) {
- if(s_it->GetHost() == host) {
- flag = false;
- s_it->ParseData(data, host);
- dsyslog("[plex] Server Updated: %s", host.c_str());
- }
+
+ PlexServer newServ(data, host);
+ // Set token for local servers
+ if(Config::GetInstance().UsePlexAccount) {
+ newServ.SetAuthToken(Plexservice::GetMyPlexToken());
}
- if(flag) {
- m_vServers.push_back(PlexServer(data, host));
- // Set token for local servers
- if(Config::GetInstance().UsePlexAccount) {
- m_vServers[m_vServers.size()-1].SetAuthToken(Plexservice::GetMyPlexToken());
- }
- isyslog("[plex] New Server Discovered: %s", host.c_str());
+
+ if(AddServer(newServ)) {
+ isyslog("[plex] New server found via GDM: %s", host.c_str());
+ }
+ else if(GetServer(newServ.m_sUuid)) {
+ GetServer(newServ.m_sUuid)->ParseData(data, host);
+ dsyslog("[plex] Server updated via GDM: %s", host.c_str());
}
}
} catch (Poco::IOException&) {
@@ -230,16 +227,16 @@ PlexServer* plexgdm::GetServer(std::string uuid)
return NULL;
}
-void plexgdm::AddServer(PlexServer server)
+bool plexgdm::AddServer(PlexServer server)
{
for(std::vector<PlexServer>::iterator s_it = m_vServers.begin(); s_it != m_vServers.end(); ++s_it) {
if(s_it->GetUuid() == server.GetUuid() ){
- dsyslog("[plex] Server already in list: %s", server.GetUri().c_str());
- return;
+ return false;
}
}
m_vServers.push_back(server);
isyslog("[plex] New Server Added: %s", server.GetUri().c_str());
+ return true;
}
} // namespace