Skip to content

Commit 485ea82

Browse files
committedJan 10, 2017
Ensure url is complete in fcgi request
1 parent 2629690 commit 485ea82

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed
 

‎src/server/qgsfcgiserverresponse.cpp

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,47 @@ QgsFcgiServerRequest::QgsFcgiServerRequest()
173173
{
174174
mHasError = false;
175175

176+
// Rebuild the full URL
177+
176178
// Get the REQUEST_URI from the environment
177179
QUrl url;
178-
const char* uri = getenv( "REQUEST_URI" );
179-
if ( uri )
180+
QString uri = getenv( "REQUEST_URI" );
181+
if ( uri.isEmpty() )
182+
{
183+
uri = getenv( "SCRIPT_NAME");
184+
}
185+
186+
url.setUrl( uri );
187+
188+
// Check if host is defined
189+
if( url.host().isEmpty() )
190+
{
191+
url.setHost( getenv( "SERVER_NAME" ) );
192+
}
193+
194+
// Port ?
195+
if( url.port(-1) == -1 )
180196
{
181-
url.setUrl( uri );
197+
QString portString = getenv( "SERVER_PORT" );
198+
if ( !portString.isEmpty() )
199+
{
200+
bool portOk;
201+
int portNumber = portString.toInt( &portOk );
202+
if ( portOk && portNumber != 80 )
203+
{
204+
url.setPort( portNumber );
205+
}
206+
}
182207
}
208+
209+
// scheme
210+
if( url.scheme().isEmpty() )
211+
{
212+
QString( getenv( "HTTPS" ) ).compare( QLatin1String( "on" ), Qt::CaseInsensitive ) == 0
213+
? url.setScheme( QStringLiteral( "https" ) )
214+
: url.setScheme( QStringLiteral( "http" ) );
215+
}
216+
183217
// XXX OGC paremetrs are passed with the query string
184218
// we override the query string url in case it is
185219
// defined independently of REQUEST_URI

0 commit comments

Comments
 (0)
Please sign in to comment.