Skip to content

Commit

Permalink
Merge pull request #1314 from manisandro/network_timeout
Browse files Browse the repository at this point in the history
Restart timeout timer when data is received in QgsNetworkAccessManager
  • Loading branch information
jef-n committed Apr 10, 2014
2 parents a1f1b94 + d2dce59 commit d1dffdc
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -9301,6 +9301,8 @@ void QgisApp::namSetup()
connect( nam, SIGNAL( proxyAuthenticationRequired( const QNetworkProxy &, QAuthenticator * ) ),
this, SLOT( namProxyAuthenticationRequired( const QNetworkProxy &, QAuthenticator * ) ) );

connect( nam, SIGNAL( requestTimedOut( QNetworkReply* ) ), this, SLOT( namRequestTimedOut( QNetworkReply* ) ) );

#ifndef QT_NO_OPENSSL
connect( nam, SIGNAL( sslErrors( QNetworkReply *, const QList<QSslError> & ) ),
this, SLOT( namSslErrors( QNetworkReply *, const QList<QSslError> & ) ) );
Expand Down Expand Up @@ -9386,6 +9388,12 @@ void QgisApp::namSslErrors( QNetworkReply *reply, const QList<QSslError> &errors
}
#endif

void QgisApp::namRequestTimedOut( QNetworkReply *reply )
{
QgsMessageLog::logMessage( tr( "The request '%1' timed out. Any data received is likely incomplete." ).arg( reply->url().toString() ), QString::null, QgsMessageLog::WARNING );
messageBar()->pushMessage( tr( "Network request timeout" ), tr( "A network request timed out, any data received is likely incomplete." ), QgsMessageBar::WARNING, messageTimeout() );
}

void QgisApp::namUpdate()
{
QgsNetworkAccessManager::instance()->setupDefaultProxyAndCache();
Expand Down
2 changes: 2 additions & 0 deletions src/app/qgisapp.h
Expand Up @@ -594,6 +594,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
#ifndef QT_NO_OPENSSL
void namSslErrors( QNetworkReply *reply, const QList<QSslError> &errors );
#endif
void namRequestTimedOut( QNetworkReply *reply );

//! update default action of toolbutton
void toolButtonActionTriggered( QAction * );
Expand Down Expand Up @@ -1553,3 +1554,4 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
#endif

#endif

5 changes: 5 additions & 0 deletions src/core/qgsnetworkaccessmanager.cpp
Expand Up @@ -161,6 +161,8 @@ QNetworkReply *QgsNetworkAccessManager::createRequest( QNetworkAccessManager::Op
timer->setSingleShot( true );
timer->start( s.value( "/qgis/networkAndProxy/networkTimeout", "20000" ).toInt() );

connect( reply, SIGNAL( downloadProgress( qint64, qint64 ) ), timer, SLOT( start() ) );

This comment has been minimized.

Copy link
@m-kuhn

m-kuhn Apr 12, 2014

Member

Isn't that already handled in QgsNetworkAccessManager::connectionProgress()?


mActiveRequests.insert( reply, timer );
return reply;
}
Expand Down Expand Up @@ -194,6 +196,8 @@ void QgsNetworkAccessManager::abortRequest()

if ( reply->isRunning() )
reply->close();

emit requestTimedOut( reply );
}

QString QgsNetworkAccessManager::cacheLoadControlName( QNetworkRequest::CacheLoadControl theControl )
Expand Down Expand Up @@ -324,3 +328,4 @@ void QgsNetworkAccessManager::setupDefaultProxyAndCache()
setProxy( proxy );
#endif
}

2 changes: 2 additions & 0 deletions src/core/qgsnetworkaccessmanager.h
Expand Up @@ -87,6 +87,7 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
signals:
void requestAboutToBeCreated( QNetworkAccessManager::Operation, const QNetworkRequest &, QIODevice * );
void requestCreated( QNetworkReply * );
void requestTimedOut( QNetworkReply * );

private slots:
void connectionProgress();
Expand All @@ -105,3 +106,4 @@ class CORE_EXPORT QgsNetworkAccessManager : public QNetworkAccessManager
};

#endif // QGSNETWORKACCESSMANAGER_H

0 comments on commit d1dffdc

Please sign in to comment.