# # # patch "ChangeLog" # from [7a4f96db238b9ec6693f949870e7eb78c00329de] # to [506b6a568f020ca2395531db6047ac80377609f4] # # patch "contrib/usher.cc" # from [d70e075f22b9098967c5add74c0e5988ae5bbd8d] # to [feda742d0a0ae8051d1d00e989f3fa002cb3309b] # ============================================================ --- ChangeLog 7a4f96db238b9ec6693f949870e7eb78c00329de +++ ChangeLog 506b6a568f020ca2395531db6047ac80377609f4 @@ -1,6 +1,11 @@ 2006-04-21 Richard Levitte * contrib/usher.cc (server::set_hosts, server::set_patterns): + Explain a little more what is removed from what. + +2006-04-21 Richard Levitte + + * contrib/usher.cc (server::set_hosts, server::set_patterns): Write a warning saying that existing entries with the same host or pattern are stripped of said host or pattern. (server::set_patterns): Erasing the list node that we're iterating ============================================================ --- contrib/usher.cc d70e075f22b9098967c5add74c0e5988ae5bbd8d +++ contrib/usher.cc feda742d0a0ae8051d1d00e989f3fa002cb3309b @@ -699,19 +699,25 @@ for (vector::const_iterator i = h.begin(); i != h.end(); ++i) { c = servers_by_host.find(*i); if (c != servers_by_host.end()) { - cerr << "Removing duplicates for host " << *i << std::endl; + cerr << "Removing duplicate for hostname " << *i << " in:" << std::endl + << " "; list >::iterator>::iterator j; + bool first = true; for (j = c->second->by_host.begin(); j != c->second->by_host.end();) { list >::iterator>::iterator j_saved = j; ++j; + cerr << (first ? "" : ", ") << (*j_saved)->second->by_name->first; + first = false; if ((*j_saved)->first == *i) { servers_by_host.erase(*j_saved); c->second->by_host.erase(j_saved); } } + cerr << std::endl + << " ... because it appeared in " << by_name->first << std::endl; } c = servers_by_host.insert(make_pair(*i, me)).first; by_host.push_back(c); @@ -728,18 +734,25 @@ for (vector::const_iterator i = p.begin(); i != p.end(); ++i) { c = servers_by_pattern.find(*i); if (c != servers_by_pattern.end()) { - cerr << "Removing duplicates for pattern " << *i << std::endl; + cerr << "Removing duplicate for pattern " << *i << " in: " << std::endl + << " "; list >::iterator>::iterator j; + bool first = true; for (j = c->second->by_pat.begin(); j != c->second->by_pat.end(); ++j) { list >::iterator>::iterator j_saved = j; ++j; - if ((*j_saved)->first == *i) { - servers_by_pattern.erase(*j_saved); - c->second->by_pat.erase(j_saved); - } + cerr << (first ? "" : ", ") << (*j_saved)->second->by_name->first; + first = false; + if ((*j_saved)->first == *i) + { + servers_by_pattern.erase(*j_saved); + c->second->by_pat.erase(j_saved); + } } + cerr << std::endl + << " ... because it appeared in " << by_name->first << std::endl; } c = servers_by_pattern.insert(make_pair(*i, me)).first; by_pat.push_back(c);