From cd763bccf2dcde7b313c046da0d5b3f6d02c005e Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Thu, 10 Jan 2019 10:58:27 +0100 Subject: [PATCH] Update override comment with a full explanation of what it does Also checks for original url emptiness before returning it. --- python/server/auto_generated/qgsfcgiserverrequest.sip.in | 8 +++++--- src/server/qgsfcgiserverrequest.cpp | 2 +- src/server/qgsfcgiserverrequest.h | 8 +++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/python/server/auto_generated/qgsfcgiserverrequest.sip.in b/python/server/auto_generated/qgsfcgiserverrequest.sip.in index c1c4eeed64f..56f122b0306 100644 --- a/python/server/auto_generated/qgsfcgiserverrequest.sip.in +++ b/python/server/auto_generated/qgsfcgiserverrequest.sip.in @@ -38,9 +38,11 @@ Returns true if an error occurred during initialization :return: the request url -Subclasses may override in case the original URL needs to be -returned instead of the rewritten one (i.e. from a web server -rewrite module). +Overrides base implementation because FCGI is typically behind +a proxy server and QGIS Server will see a rewritten QUERY_STRING. +FCGI implementation stores the REQUEST_URI (which is the URL seen +by the proxy before it gets rewritten) and returns it instead of +the rewritten one. %End diff --git a/src/server/qgsfcgiserverrequest.cpp b/src/server/qgsfcgiserverrequest.cpp index c1477206f67..51d17168b8f 100644 --- a/src/server/qgsfcgiserverrequest.cpp +++ b/src/server/qgsfcgiserverrequest.cpp @@ -135,7 +135,7 @@ QByteArray QgsFcgiServerRequest::data() const QUrl QgsFcgiServerRequest::url() const { - return mOriginalUrl; + return mOriginalUrl.isEmpty() ? QgsServerRequest::url() : mOriginalUrl; } // Read post put data diff --git a/src/server/qgsfcgiserverrequest.h b/src/server/qgsfcgiserverrequest.h index 0ddea643af9..8f6664e7805 100644 --- a/src/server/qgsfcgiserverrequest.h +++ b/src/server/qgsfcgiserverrequest.h @@ -45,9 +45,11 @@ class SERVER_EXPORT QgsFcgiServerRequest: public QgsServerRequest /** * \returns the request url * - * Subclasses may override in case the original URL needs to be - * returned instead of the rewritten one (i.e. from a web server - * rewrite module). + * Overrides base implementation because FCGI is typically behind + * a proxy server and QGIS Server will see a rewritten QUERY_STRING. + * FCGI implementation stores the REQUEST_URI (which is the URL seen + * by the proxy before it gets rewritten) and returns it instead of + * the rewritten one. */ QUrl url() const override;