Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Clear the request handler when done
also added some comments and docs strings
  • Loading branch information
elpaso committed Jul 10, 2015
1 parent 368eaa2 commit c126592
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 4 deletions.
2 changes: 1 addition & 1 deletion python/server/qgsrequesthandler.sip
Expand Up @@ -61,7 +61,7 @@ class QgsRequestHandler
/**Remove a request parameter*/
virtual int removeParameter( const QString &key ) = 0;
/**Return a request parameter*/
virtual QString parameter( const QString &key ) const = 0;
virtual QString parameter( const QString &key) const = 0;
/**Return the requested format string*/
QString format() const;
/**Return the mime type for the response*/
Expand Down
3 changes: 3 additions & 0 deletions src/server/qgsserver.cpp
Expand Up @@ -590,6 +590,9 @@ QByteArray QgsServer::handleRequest( const QString queryString ,
{
filtersIterator.value()->responseComplete();
}
// We are done using theRequestHandler in plugins, make sure we don't access
// to a deleted request handler from Python bindings
mServerInterface->clearRequestHandler( );
#endif

theRequestHandler->sendResponse();
Expand Down
2 changes: 0 additions & 2 deletions src/server/qgsserverinterface.cpp
Expand Up @@ -21,8 +21,6 @@
QgsServerInterface::QgsServerInterface():
mConfigFilePath( QString() )
{


}

QgsServerInterface::~QgsServerInterface()
Expand Down
7 changes: 7 additions & 0 deletions src/server/qgsserverinterface.h
Expand Up @@ -47,6 +47,13 @@ class SERVER_EXPORT QgsServerInterface
*/
virtual void setRequestHandler( QgsRequestHandler* requestHandler ) = 0;

/**
* Clear the request handler
*
* @note not available in python bindings
*/
virtual void clearRequestHandler( ) = 0;

/**
* Get pointer to the capabiblities cache
* @return QgsCapabilitiesCache
Expand Down
6 changes: 6 additions & 0 deletions src/server/qgsserverinterfaceimpl.cpp
Expand Up @@ -38,6 +38,12 @@ QgsServerInterfaceImpl::~QgsServerInterfaceImpl()
{
}


void QgsServerInterfaceImpl::clearRequestHandler( )
{
mRequestHandler = NULL;
}

void QgsServerInterfaceImpl::setRequestHandler( QgsRequestHandler * requestHandler )
{
mRequestHandler = requestHandler;
Expand Down
2 changes: 2 additions & 0 deletions src/server/qgsserverinterfaceimpl.h
Expand Up @@ -45,7 +45,9 @@ class QgsServerInterfaceImpl : public QgsServerInterface
~QgsServerInterfaceImpl();

void setRequestHandler( QgsRequestHandler* requestHandler ) override;
void clearRequestHandler( ) override;
QgsCapabilitiesCache* capabiblitiesCache() override { return mCapabilitiesCache; }
//! Return the QgsRequestHandler, to be used only in server plugins
QgsRequestHandler* requestHandler( ) override { return mRequestHandler; }
void registerFilter( QgsServerFilter *filter, int priority = 0 ) override;
QgsServerFiltersMap filters( ) override { return mFilters; }
Expand Down
3 changes: 2 additions & 1 deletion tests/src/python/test_qgsserver.py
Expand Up @@ -104,7 +104,8 @@ def responseComplete(self):
## WMS tests
def wms_request_compare(self, request):
map = self.testdata_path + "testproject.qgs"
response = str(self.server.handleRequest('MAP=%s&SERVICE=WMS&VERSION=1.3&REQUEST=%s' % (map, request)))
query_string = 'MAP=%s&SERVICE=WMS&VERSION=1.3&REQUEST=%s' % (map, request)
response = str(self.server.handleRequest(query_string))
f = open(self.testdata_path + request.lower() + '.txt')
expected = f.read()
f.close()
Expand Down

0 comments on commit c126592

Please sign in to comment.