@@ -463,6 +463,14 @@ int Transaction::processURI(const char *uri, const char *method,
463463
464464 size_t pos_raw_query = uri_s.find (" ?" );
465465
466+ std::string path_info_raw;
467+ if (pos_raw_query == std::string::npos) {
468+ path_info_raw = std::string (uri_s, 0 );
469+ } else {
470+ path_info_raw = std::string (uri_s, 0 , pos_raw_query);
471+ }
472+ std::string path_info = utils::uri_decode (path_info_raw);
473+
466474 m_uri_decoded = utils::uri_decode (uri_s);
467475
468476 size_t var_size = pos_raw_query;
@@ -477,15 +485,8 @@ int Transaction::processURI(const char *uri, const char *method,
477485 m_variableRequestProtocol.set (" HTTP/" + std::string (http_version),
478486 m_variableOffset + requestLine.size () + 1 );
479487
480-
481- size_t pos_query = m_uri_decoded.find (" ?" );
482- if (pos_query != std::string::npos) {
483- m_uri_no_query_string_decoded = std::unique_ptr<std::string>(
484- new std::string (m_uri_decoded, 0 , pos_query));
485- } else {
486- m_uri_no_query_string_decoded = std::unique_ptr<std::string>(
487- new std::string (m_uri_decoded));
488- }
488+ m_uri_no_query_string_decoded = std::unique_ptr<std::string>(
489+ new std::string (path_info));
489490
490491
491492 if (pos_raw_query != std::string::npos) {
@@ -495,12 +496,7 @@ int Transaction::processURI(const char *uri, const char *method,
495496 + std::string (method).size () + 1 );
496497 }
497498
498- std::string path_info;
499- if (pos_query == std::string::npos) {
500- path_info = std::string (m_uri_decoded, 0 );
501- } else {
502- path_info = std::string (m_uri_decoded, 0 , pos_query);
503- }
499+
504500 if (var_size == std::string::npos) {
505501 var_size = uri_s.size ();
506502 }
0 commit comments