]> git.saurik.com Git - apt.git/commitdiff
webserver: strip parameters from filename
authorDavid Kalnischkies <kalnischkies@gmail.com>
Wed, 16 Oct 2013 20:43:01 +0000 (22:43 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 30 Nov 2013 11:38:26 +0000 (12:38 +0100)
Again, not (currently) used by the tests itself, but in interactive
usage of the webserver itself.

Git-Dch: Ignore

test/interactive-helper/aptwebserver.cc

index 0e04826c513338a46641bd8f7a0791f0cb02b592..94f63bb39e590d3427fab91eb0d5d0e2d87f79f7 100644 (file)
@@ -308,7 +308,7 @@ void sendDirectoryListing(int const client, std::string const &dir, /*{{{*/
 }
                                                                        /*}}}*/
 bool parseFirstLine(int const client, std::string const &request,      /*{{{*/
-                   std::string &filename, bool &sendContent,
+                   std::string &filename, std::string &params, bool &sendContent,
                    bool &closeConnection)
 {
    if (strncmp(request.c_str(), "HEAD ", 5) == 0)
@@ -375,6 +375,14 @@ bool parseFirstLine(int const client, std::string const &request,  /*{{{*/
       sendError(client, 400, request, sendContent, "Request is absolutePath, but configured to not accept that");
       return false;
    }
+
+   size_t paramspos = filename.find('?');
+   if (paramspos != std::string::npos)
+   {
+      params = filename.substr(paramspos + 1);
+      filename.erase(paramspos);
+   }
+
    filename = DeQuoteString(filename);
 
    // this is not a secure server, but at least prevent the obvious …