Skip to content

Commit

Permalink
Restart timeout timer when data is received in QgsNetworkAccessManage…
Browse files Browse the repository at this point in the history
…r, show a message if timeout is reached.
  • Loading branch information
manisandro committed Apr 9, 2014
1 parent 5f19830 commit a63de6d
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 @@ -9296,6 +9296,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 @@ -9381,6 +9383,11 @@ void QgisApp::namSslErrors( QNetworkReply *reply, const QList<QSslError> &errors
}
#endif

void QgisApp::namRequestTimedOut( QNetworkReply *reply )
{
QMessageBox::warning( this, tr( "Network request timed out" ), tr( "The following request timed out %1. If any data was received, it is likely incomplete." ).arg( reply->url().toString() ) );
}

void QgisApp::namUpdate()
{
QgsNetworkAccessManager::instance()->setupDefaultProxyAndCache();
Expand Down Expand Up @@ -9560,3 +9567,4 @@ LONG WINAPI QgisApp::qgisCrashDump( struct _EXCEPTION_POINTERS *ExceptionInfo )
return EXCEPTION_EXECUTE_HANDLER;
}
#endif

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() ) );

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 a63de6d

Please sign in to comment.