diff --git a/selfdrive/ui/qt/api.cc b/selfdrive/ui/qt/api.cc index 72095fef7e..55fb20f4bc 100644 --- a/selfdrive/ui/qt/api.cc +++ b/selfdrive/ui/qt/api.cc @@ -67,24 +67,24 @@ QString create_jwt(const QJsonObject &payloads, int expiry) { } // namespace CommaApi -HttpRequest::HttpRequest(QObject *parent, const QString &requestURL, bool create_jwt_, - int timeout) : create_jwt(create_jwt_), QObject(parent) { +HttpRequest::HttpRequest(QObject *parent, bool create_jwt, int timeout) : create_jwt(create_jwt), QObject(parent) { networkAccessManager = new QNetworkAccessManager(this); - reply = NULL; networkTimer = new QTimer(this); networkTimer->setSingleShot(true); networkTimer->setInterval(timeout); connect(networkTimer, &QTimer::timeout, this, &HttpRequest::requestTimeout); - - sendRequest(requestURL); } bool HttpRequest::active() { - return reply != NULL; + return reply != nullptr; } void HttpRequest::sendRequest(const QString &requestURL) { + if (active()) { + qDebug() << "HttpRequest is active"; + return; + } QString token; if(create_jwt) { token = CommaApi::create_jwt(); @@ -129,5 +129,5 @@ void HttpRequest::requestFinished() { } emit requestDone(success); reply->deleteLater(); - reply = NULL; + reply = nullptr; } diff --git a/selfdrive/ui/qt/api.h b/selfdrive/ui/qt/api.h index 584697a893..ac190c4226 100644 --- a/selfdrive/ui/qt/api.h +++ b/selfdrive/ui/qt/api.h @@ -20,16 +20,16 @@ class HttpRequest : public QObject { Q_OBJECT public: - explicit HttpRequest(QObject* parent, const QString &requestURL, bool create_jwt_ = true, int timeout = 20000); + explicit HttpRequest(QObject* parent, bool create_jwt = true, int timeout = 20000); void sendRequest(const QString &requestURL); bool active(); protected: - QNetworkReply *reply; + QNetworkReply *reply = nullptr; private: - QNetworkAccessManager *networkAccessManager; - QTimer *networkTimer; + QNetworkAccessManager *networkAccessManager = nullptr; + QTimer *networkTimer = nullptr; bool create_jwt; private slots: diff --git a/selfdrive/ui/qt/request_repeater.cc b/selfdrive/ui/qt/request_repeater.cc index 959d7eff00..c11698d6f1 100644 --- a/selfdrive/ui/qt/request_repeater.cc +++ b/selfdrive/ui/qt/request_repeater.cc @@ -1,11 +1,11 @@ #include "selfdrive/ui/qt/request_repeater.h" RequestRepeater::RequestRepeater(QObject *parent, const QString &requestURL, const QString &cacheKey, - int period, bool while_onroad) : HttpRequest(parent, requestURL) { + int period, bool while_onroad) : HttpRequest(parent) { timer = new QTimer(this); timer->setTimerType(Qt::VeryCoarseTimer); QObject::connect(timer, &QTimer::timeout, [=]() { - if ((!QUIState::ui_state.scene.started || while_onroad) && QUIState::ui_state.awake && reply == NULL) { + if ((!QUIState::ui_state.scene.started || while_onroad) && QUIState::ui_state.awake && !active()) { sendRequest(requestURL); } }); diff --git a/selfdrive/ui/qt/setup/setup.cc b/selfdrive/ui/qt/setup/setup.cc index 3bd436ae87..8688240888 100644 --- a/selfdrive/ui/qt/setup/setup.cc +++ b/selfdrive/ui/qt/setup/setup.cc @@ -117,12 +117,13 @@ QWidget * Setup::network_setup() { blayout->addWidget(cont); // setup timer for testing internet connection - HttpRequest *request = new HttpRequest(this, DASHCAM_URL, false, 2500); + HttpRequest *request = new HttpRequest(this, false, 2500); QObject::connect(request, &HttpRequest::requestDone, [=](bool success) { cont->setEnabled(success); cont->setText(success ? "Continue" : "Waiting for internet"); repaint(); }); + request->sendRequest(DASHCAM_URL); QTimer *timer = new QTimer(this); QObject::connect(timer, &QTimer::timeout, [=]() { if (!request->active() && cont->isVisible()) { diff --git a/selfdrive/ui/qt/widgets/ssh_keys.cc b/selfdrive/ui/qt/widgets/ssh_keys.cc index 1790233260..c6af2f5cd1 100644 --- a/selfdrive/ui/qt/widgets/ssh_keys.cc +++ b/selfdrive/ui/qt/widgets/ssh_keys.cc @@ -40,7 +40,7 @@ void SshControl::refresh() { } void SshControl::getUserKeys(const QString &username) { - HttpRequest *request = new HttpRequest(this, "https://github.com/" + username + ".keys", false); + HttpRequest *request = new HttpRequest(this, false); QObject::connect(request, &HttpRequest::receivedResponse, [=](const QString &resp) { if (!resp.isEmpty()) { params.put("GithubUsername", username.toStdString()); @@ -61,4 +61,6 @@ void SshControl::getUserKeys(const QString &username) { refresh(); request->deleteLater(); }); + + request->sendRequest("https://github.com/" + username + ".keys"); } diff --git a/selfdrive/ui/replay/replay.cc b/selfdrive/ui/replay/replay.cc index 23f168ba94..638ff7106f 100644 --- a/selfdrive/ui/replay/replay.cc +++ b/selfdrive/ui/replay/replay.cc @@ -46,8 +46,9 @@ Replay::Replay(QString route, SubMaster *sm_, QObject *parent) : sm(sm_), QObjec } const QString url = "https://api.commadotai.com/v1/route/" + route + "/files"; - http = new HttpRequest(this, url, !Hardware::PC()); + http = new HttpRequest(this, !Hardware::PC()); QObject::connect(http, &HttpRequest::receivedResponse, this, &Replay::parseResponse); + http->sendRequest(url); } void Replay::parseResponse(const QString &response) {