Loading src/http.cpp +30 −30 Original line number Diff line number Diff line Loading @@ -722,7 +722,7 @@ void libhttppp::HttpForm::parse(libhttppp::HttpRequest* request){ } } } std::vector<char> urldat; netplus::condata<char> urldat; const char *rurl=request->getRequest(); size_t rurlsize=strlen(rurl); ssize_t rdelimter=-1; Loading @@ -734,7 +734,7 @@ void libhttppp::HttpForm::parse(libhttppp::HttpRequest* request){ } } if(rdelimter!=-1){ std::copy(rurl+rdelimter,rurl+rurlsize,std::inserter<std::vector<char>>(urldat,urldat.begin())); std::copy(rurl+rdelimter,rurl+rurlsize,std::inserter<netplus::condata<char>>(urldat,urldat.begin())); _parseUrlDecode(urldat); } }catch(...){} Loading Loading @@ -806,17 +806,17 @@ void libhttppp::HttpForm::_parseBoundary(const char* contenttype){ _Boundary.push_back('\0'); } void libhttppp::HttpForm::_parseMulitpart(const std::vector<char> &data){ std::vector<char> realboundary; void libhttppp::HttpForm::_parseMulitpart(const netplus::condata<char> &data){ netplus::condata<char> realboundary; realboundary.resize(_Boundary.size()+2); std::copy(_Boundary.begin(),_Boundary.end(),realboundary.begin()+2); realboundary[0]='-'; realboundary[1]='-'; std::vector<char> req; netplus::condata<char> req; std::copy(data.begin(),data.end(), std::inserter<std::vector<char>>(req,req.begin())); std::inserter<netplus::condata<char>>(req,req.begin())); size_t realboundarypos=0; size_t oldpos=std::string::npos; Loading Loading @@ -844,26 +844,9 @@ void libhttppp::HttpForm::_parseMulitpart(const std::vector<char> &data){ } } void libhttppp::HttpForm::_parseMultiSection(std::vector<char> &data,size_t start, size_t end){ void libhttppp::HttpForm::_parseMultiSection(netplus::condata<char> &data,size_t start, size_t end){ auto searchElement = [](size_t starts,size_t ends, const char *word,std::vector<char> &sdata){ size_t wsize=strlen(word); for(size_t i=starts; i< ends; ++i){ for(size_t ii=0; ii<=wsize; ++ii){ if(ii==wsize){ return i; } if( tolower(sdata[i])==tolower(word[ii]) ){ ++i; continue; } break; } } return std::string::npos; }; size_t findel=searchElement(start,end,"\r\n\r\n",data); size_t findel=data.search("\r\n\r\n"); if(findel==std::string::npos) return; Loading Loading @@ -919,6 +902,23 @@ void libhttppp::HttpForm::_parseMultiSection(std::vector<char> &data,size_t star } } auto searchElement=[](int startpos,size_t size,const char* word,std::vector<char> &sdata){ size_t wsize=strlen(word); for(size_t i=startpos; i<size; ++i){ for(size_t ii=0; ii<=wsize; ++ii){ if(ii==wsize){ return i-wsize; } if(sdata.at(i)==word[ii]){ ++i; continue; } break; } } return std::string::npos; }; if(cdispo){ size_t ifdp= searchElement(0,cdispo->_Value.size(),"form-data",cdispo->_Value); Loading Loading @@ -1132,7 +1132,7 @@ void libhttppp::HttpForm::MultipartForm::Data::addContent(Content content){ } void libhttppp::HttpForm::_parseUrlDecode(const std::vector<char> &data){ void libhttppp::HttpForm::_parseUrlDecode(const netplus::condata<char> &data){ HTTPException httpexception; size_t fdatstpos=0; Loading src/http.h +3 −3 Original line number Diff line number Diff line Loading @@ -293,11 +293,11 @@ namespace libhttppp { MultipartForm MultipartFormData; private: /*urldecoded*/ void _parseUrlDecode(const std::vector<char> &data); void _parseUrlDecode(const netplus::condata<char> &data); /*multiform*/ void _parseMulitpart(const std::vector<char> &data); void _parseMultiSection(std::vector<char> &data,size_t start, size_t end); void _parseMulitpart(const netplus::condata<char> &data); void _parseMultiSection(netplus::condata<char> &data,size_t start, size_t end); void _parseBoundary(const char *contenttype); std::vector<char> _Boundary; Loading Loading
src/http.cpp +30 −30 Original line number Diff line number Diff line Loading @@ -722,7 +722,7 @@ void libhttppp::HttpForm::parse(libhttppp::HttpRequest* request){ } } } std::vector<char> urldat; netplus::condata<char> urldat; const char *rurl=request->getRequest(); size_t rurlsize=strlen(rurl); ssize_t rdelimter=-1; Loading @@ -734,7 +734,7 @@ void libhttppp::HttpForm::parse(libhttppp::HttpRequest* request){ } } if(rdelimter!=-1){ std::copy(rurl+rdelimter,rurl+rurlsize,std::inserter<std::vector<char>>(urldat,urldat.begin())); std::copy(rurl+rdelimter,rurl+rurlsize,std::inserter<netplus::condata<char>>(urldat,urldat.begin())); _parseUrlDecode(urldat); } }catch(...){} Loading Loading @@ -806,17 +806,17 @@ void libhttppp::HttpForm::_parseBoundary(const char* contenttype){ _Boundary.push_back('\0'); } void libhttppp::HttpForm::_parseMulitpart(const std::vector<char> &data){ std::vector<char> realboundary; void libhttppp::HttpForm::_parseMulitpart(const netplus::condata<char> &data){ netplus::condata<char> realboundary; realboundary.resize(_Boundary.size()+2); std::copy(_Boundary.begin(),_Boundary.end(),realboundary.begin()+2); realboundary[0]='-'; realboundary[1]='-'; std::vector<char> req; netplus::condata<char> req; std::copy(data.begin(),data.end(), std::inserter<std::vector<char>>(req,req.begin())); std::inserter<netplus::condata<char>>(req,req.begin())); size_t realboundarypos=0; size_t oldpos=std::string::npos; Loading Loading @@ -844,26 +844,9 @@ void libhttppp::HttpForm::_parseMulitpart(const std::vector<char> &data){ } } void libhttppp::HttpForm::_parseMultiSection(std::vector<char> &data,size_t start, size_t end){ void libhttppp::HttpForm::_parseMultiSection(netplus::condata<char> &data,size_t start, size_t end){ auto searchElement = [](size_t starts,size_t ends, const char *word,std::vector<char> &sdata){ size_t wsize=strlen(word); for(size_t i=starts; i< ends; ++i){ for(size_t ii=0; ii<=wsize; ++ii){ if(ii==wsize){ return i; } if( tolower(sdata[i])==tolower(word[ii]) ){ ++i; continue; } break; } } return std::string::npos; }; size_t findel=searchElement(start,end,"\r\n\r\n",data); size_t findel=data.search("\r\n\r\n"); if(findel==std::string::npos) return; Loading Loading @@ -919,6 +902,23 @@ void libhttppp::HttpForm::_parseMultiSection(std::vector<char> &data,size_t star } } auto searchElement=[](int startpos,size_t size,const char* word,std::vector<char> &sdata){ size_t wsize=strlen(word); for(size_t i=startpos; i<size; ++i){ for(size_t ii=0; ii<=wsize; ++ii){ if(ii==wsize){ return i-wsize; } if(sdata.at(i)==word[ii]){ ++i; continue; } break; } } return std::string::npos; }; if(cdispo){ size_t ifdp= searchElement(0,cdispo->_Value.size(),"form-data",cdispo->_Value); Loading Loading @@ -1132,7 +1132,7 @@ void libhttppp::HttpForm::MultipartForm::Data::addContent(Content content){ } void libhttppp::HttpForm::_parseUrlDecode(const std::vector<char> &data){ void libhttppp::HttpForm::_parseUrlDecode(const netplus::condata<char> &data){ HTTPException httpexception; size_t fdatstpos=0; Loading
src/http.h +3 −3 Original line number Diff line number Diff line Loading @@ -293,11 +293,11 @@ namespace libhttppp { MultipartForm MultipartFormData; private: /*urldecoded*/ void _parseUrlDecode(const std::vector<char> &data); void _parseUrlDecode(const netplus::condata<char> &data); /*multiform*/ void _parseMulitpart(const std::vector<char> &data); void _parseMultiSection(std::vector<char> &data,size_t start, size_t end); void _parseMulitpart(const netplus::condata<char> &data); void _parseMultiSection(netplus::condata<char> &data,size_t start, size_t end); void _parseBoundary(const char *contenttype); std::vector<char> _Boundary; Loading