| 198 | |
| 199 | |
| 200 | bool CServerList::AddServer(CServer* in_server, bool fromUser) |
| 201 | { |
| 202 | if ( !in_server->GetPort() ) { |
| 203 | if ( fromUser ) { |
| 204 | AddLogLineC(CFormat( _("Server not added: [%s:%d] does not specify a valid port.") ) |
| 205 | % in_server->GetAddress() |
| 206 | % in_server->GetPort() |
| 207 | ); |
| 208 | } |
| 209 | |
| 210 | return false; |
| 211 | } else if ( |
| 212 | !in_server->HasDynIP() && |
| 213 | ( |
| 214 | !IsGoodIP( in_server->GetIP(), thePrefs::FilterLanIPs() ) || |
| 215 | ( // don't test for filtered while ipfilter is still loading, |
| 216 | // it will be filtered when filter loading is finished |
| 217 | theApp->ipfilter->IsReady() |
| 218 | && theApp->ipfilter->IsFiltered(in_server->GetIP(), true)) |
| 219 | ) |
| 220 | ) { |
| 221 | if ( fromUser ) { |
| 222 | AddLogLineC(CFormat( _("Server not added: The IP of [%s:%d] is filtered or invalid.") ) |
| 223 | % in_server->GetAddress() |
| 224 | % in_server->GetPort() |
| 225 | ); |
| 226 | } |
| 227 | |
| 228 | return false; |
| 229 | } |
| 230 | |
| 231 | CServer* test_server = GetServerByAddress(in_server->GetAddress(), in_server->GetPort()); |
| 232 | // Avoid duplicate (dynIP) servers: If the server which is to be added, is a dynIP-server |
| 233 | // but we don't know yet it's DN, we need to search for an already available server with |
| 234 | // that IP. |
| 235 | if (test_server == NULL && in_server->GetIP() != 0) { |
| 236 | test_server = GetServerByIPTCP(in_server->GetIP(), in_server->GetPort()); |
| 237 | } |
| 238 | |
| 239 | if (test_server) { |
| 240 | if ( fromUser ) { |
| 241 | AddLogLineC(CFormat( _("Server not added: Server with matching IP:Port [%s:%d] found in list.") ) |
| 242 | % in_server->GetAddress() |
| 243 | % in_server->GetPort() |
| 244 | ); |
| 245 | } |
| 246 | |
| 247 | test_server->ResetFailedCount(); |
| 248 | Notify_ServerRefresh( test_server ); |
| 249 | |
| 250 | return false; |
| 251 | } |
| 252 | |
| 253 | theStats::AddServer(); |
| 254 | |
| 255 | m_servers.push_back(in_server); |
| 256 | NotifyObservers( EventType( EventType::INSERTED, in_server ) ); |
| 257 |
no test coverage detected