X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fhttp%2Frequest.cpp;h=685de332371749d35b7665e7619e399c39726f29;hb=1ccb251524403a7318908e076c4f805bd3927247;hp=54b0beeaa9cb4f7e908f995a2d0d328bc1bf91a0;hpb=b4e0f7ed23f24e78fd09c9b7f206279e16d38c1e;p=libs%2Fnet.git diff --git a/source/http/request.cpp b/source/http/request.cpp index 54b0bee..685de33 100644 --- a/source/http/request.cpp +++ b/source/http/request.cpp @@ -1,7 +1,7 @@ +#include "request.h" #include #include #include -#include "request.h" #include "utils.h" using namespace std; @@ -28,6 +28,8 @@ string Request::str() const Request Request::parse(const string &str) { string::size_type lf = str.find('\n'); + if(lf==0) + throw invalid_argument("Request::parse"); vector parts = split(str.substr(0, lf-(str[lf-1]=='\r')), ' ', 2); if(parts.size()<3) throw invalid_argument("Request::parse"); @@ -51,11 +53,7 @@ Request Request::from_url(const string &str) string path = urlencode(url.path); if(path.empty()) path = "/"; - if(!url.query.empty()) - { - path += '?'; - path += url.query; - } + append(path, "?", url.query); Request result("GET", path); result.set_header("Host", url.host);