X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_cgi.cpp;h=dc719071a76231b5bb3533f80a81279409d31185;hb=08044cc9a9980c950c294d0193c337b4ba0ba732;hp=a89d03e4c96eb2b53177d5c2ef766f6ed88bd557;hpb=10684c98b1ceadb16be96dd5e2ad9a5b22282155;p=metaproxy-moved-to-github.git diff --git a/src/filter_cgi.cpp b/src/filter_cgi.cpp index a89d03e..dc71907 100644 --- a/src/filter_cgi.cpp +++ b/src/filter_cgi.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2010 Index Data + Copyright (C) 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 @@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include +#include #include #include @@ -53,14 +54,14 @@ namespace metaproxy_1 { yf::CGI::CGI() : m_p(new Rep) { - + } yf::CGI::Rep::~Rep() { std::map::const_iterator it; boost::mutex::scoped_lock lock(m_mutex); - + for (it = children.begin(); it != children.end(); it++) kill(it->second, SIGTERM); } @@ -73,10 +74,10 @@ void yf::CGI::process(mp::Package &package) const { Z_GDU *zgdu_req = package.request().get(); Z_GDU *zgdu_res = 0; - + if (!zgdu_req) return; - + if (zgdu_req->which != Z_GDU_HTTP_Request) { package.move(); @@ -104,7 +105,7 @@ void yf::CGI::process(mp::Package &package) const int r; pid_t pid; int status; - + pid = ::fork(); switch (pid) { @@ -145,7 +146,7 @@ void yf::CGI::process(mp::Package &package) const package.move(); } -void yf::CGI::configure(const xmlNode *ptr, bool test_only) +void yf::CGI::configure(const xmlNode *ptr, bool test_only, const char *path) { for (ptr = ptr->children; ptr; ptr = ptr->next) { @@ -164,7 +165,7 @@ void yf::CGI::configure(const xmlNode *ptr, bool test_only) exec.program = mp::xml::get_text(attr->children); else throw mp::filter::FilterException - ("Bad attribute " + ("Bad attribute " + std::string((const char *) attr->name) + " in cgi section"); } @@ -172,7 +173,7 @@ void yf::CGI::configure(const xmlNode *ptr, bool test_only) } else { - throw mp::filter::FilterException("Bad element " + throw mp::filter::FilterException("Bad element " + std::string((const char *) ptr->name)); }