Request::Request(const string &m, const string &p):
method(m),
path(p)
-{ }
+{
+ if(path.find(' ')!=string::npos)
+ throw invalid_argument("Request::Request");
+}
string Request::str() const
{
Request Request::parse(const string &str)
{
- unsigned lf = str.find('\n');
+ string::size_type lf = str.find('\n');
vector<string> parts = split(str.substr(0, lf-(str[lf-1]=='\r')), ' ', 2);
if(parts.size()<3)
throw invalid_argument("Request::parse");
if(url.scheme!="http")
throw invalid_argument("Request::from_url");
- string path = url.path;
+ string path = urlencode(url.path);
if(path.empty())
path = "/";
if(!url.query.empty())