- std::list<std::string>::const_iterator i;
- for (i = targets.begin(); i != targets.end(); i++) {
- printf("checking target '%s'\n", (*i).c_str());
- if (!contains(authorisedTargets, *i) &&
- !contains(authorisedTargets, "*")) {
- // ### check whether to quietly discard this target, or to reject
- return reject_init(package,
- YAZ_BIB1_ACCESS_TO_SPECIFIED_DATABASE_DENIED,
- i->c_str());
+ std::list<std::string>::iterator i;
+
+ i = targets.begin();
+ while (i != targets.end()) {
+ if (contains(authorisedTargets, *i) ||
+ contains(authorisedTargets, "*")) {
+ i++;
+ } else {
+ if (!m_p->discardUnauthorisedTargets)
+ return reject_init(package,
+ YAZ_BIB1_ACCESS_TO_SPECIFIED_DATABASE_DENIED, i->c_str());
+ i = targets.erase(i);