/* This file is part of Metaproxy.
- Copyright (C) 2005-2008 Index Data
+ Copyright (C) 2005-2009 Index Data
Metaproxy is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-/* $Id: filter_virt_db.cpp,v 1.54 2008-02-20 15:07:52 adam Exp $
- Copyright (c) 2005-2007, Index Data.
-
- See the LICENSE file for details
- */
#include "config.hpp"
boost::mutex m_mutex;
boost::condition m_cond_session_ready;
std::map<mp::Session, FrontendPtr> m_clients;
+ bool pass_vhosts;
};
}
}
yf::VirtualDB::VirtualDB() : m_p(new VirtualDB::Rep)
{
+ m_p->pass_vhosts = false;
}
yf::VirtualDB::~VirtualDB() {
std::list<std::string> targets;
targets.push_back(target);
- m_p->m_maps[mp::util::database_name_normalize(db)]
- = VirtualDB::Map(targets, route);
+ add_map_db2targets(db, targets, route);
}
void yf::VirtualDB::process(mp::Package &package) const
std::list<std::string> vhosts;
mp::util::get_vhost_otherinfo(req->otherInfo, vhosts);
- if (vhosts.size() == 0)
+
+ if (vhosts.size() > 0 && m_p->pass_vhosts)
+ {
+ package.move();
+ }
+ else
{
f->m_init_gdu = gdu;
package.response() = apdu;
f->m_is_virtual = true;
}
- else
- package.move();
}
else if (!f->m_is_virtual)
package.move();
{
if (ptr->type != XML_ELEMENT_NODE)
continue;
- if (!strcmp((const char *) ptr->name, "virtual"))
+ if (!strcmp((const char *) ptr->name, "pass-vhosts"))
+ {
+ m_p->pass_vhosts = mp::xml::get_bool(ptr->children, false);
+ }
+ else if (!strcmp((const char *) ptr->name, "virtual"))
{
std::string database;
std::list<std::string> targets;
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
- * c-file-style: "stroustrup"
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
*/
+