Skip to content

Commit cc96996

Browse files
committed
fix: 恢复 CURL 的内部状态
1 parent 3eb2512 commit cc96996

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/skipper.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ using namespace std::string_literals;
1616
Skipper::Skipper(ConfigAwareQEasy *qeasy, QObject *parent)
1717
: QObject(parent), _qeasy(qeasy), _logger(spdlog::get("skipper")) {
1818
assert(qeasy != nullptr);
19-
connect(_qeasy, &ConfigAwareQEasy::testFinished, this,
20-
[this](bool testSuccess, std::string message) { emit testFinished(testSuccess, message); });
19+
connect(_qeasy, &ConfigAwareQEasy::testFinished, this,
20+
[this](bool testSuccess, const std::string &message) { emit testFinished(testSuccess, message); });
2121
}
2222

2323
Skipper::~Skipper() = default;
@@ -45,7 +45,7 @@ void Skipper::getConnection() {
4545
_qeasy->perform();
4646
}
4747

48-
void Skipper::handleGetConnectionThenKill(const QString& error, long code, const QByteArray &body) {
48+
void Skipper::handleGetConnectionThenKill(const QString &error, long code, const QByteArray &body) {
4949
const std::string url = _qeasy->config().connections();
5050
if (!error.isEmpty()) {
5151
SPDLOG_LOGGER_ERROR(_logger, "GET {} failed: {}", url, error.toStdString());
@@ -65,9 +65,10 @@ void Skipper::handleGetConnectionThenKill(const QString& error, long code, const
6565
}
6666
std::string connection_to_kill;
6767
for (auto obj : doc["connections"].toArray()) {
68-
if (obj.isObject() && obj.toObject()["metadata"].toObject()["processPath"].toString()
69-
.endsWith("Hearthstone.app/Contents/MacOS/Hearthstone") &&
70-
obj.toObject()["metadata"].toObject()["host"] == "") {
68+
if (obj.isObject() &&
69+
obj.toObject()["metadata"].toObject()["processPath"].toString().endsWith(
70+
"Hearthstone.app/Contents/MacOS/Hearthstone") &&
71+
obj.toObject()["metadata"].toObject()["host"] == "") {
7172
connection_to_kill = obj.toObject()["id"].toString().toStdString();
7273
SPDLOG_LOGGER_INFO(_logger, "Connection to kill {}", connection_to_kill);
7374
break;
@@ -78,25 +79,26 @@ void Skipper::handleGetConnectionThenKill(const QString& error, long code, const
7879
_logger->flush();
7980
return;
8081
}
81-
const static std::string url2 = _qeasy->config().kill_connection(connection_to_kill);
82+
const std::string url2 = _qeasy->config().kill_connection(connection_to_kill);
8283
curl_easy_setopt(_qeasy->curl, CURLOPT_URL, url2.c_str());
8384
curl_easy_setopt(_qeasy->curl, CURLOPT_CUSTOMREQUEST, "DELETE");
8485
connect(_qeasy, &QCurlEasy::done, this, &Skipper::handleKillConnection, Qt::SingleShotConnection);
8586
_qeasy->perform();
8687
}
8788

8889
void Skipper::handleKillConnection(const QString &error, long code, const QByteArray &body) {
89-
char *url, *method;
90+
curl_easy_setopt(_qeasy->curl, CURLOPT_CUSTOMREQUEST, nullptr);
91+
curl_easy_setopt(_qeasy->curl, CURLOPT_HTTPGET, 1L); // 恢复 CURL 的内部状态
92+
char *url;
9093
curl_easy_getinfo(_qeasy->curl, CURLINFO_EFFECTIVE_URL, &url);
91-
curl_easy_getinfo(_qeasy->curl, CURLINFO_REDIRECT_URL, &method);
9294

9395
if (!error.isEmpty()) {
94-
SPDLOG_LOGGER_ERROR(_logger, "{} {} failed: {}", method, url, error.toStdString());
96+
SPDLOG_LOGGER_ERROR(_logger, "DELETE {} failed: {}", url, error.toStdString());
9597
_logger->flush();
9698
return;
9799
}
98100
if (code / 100 != 2) {
99-
SPDLOG_LOGGER_ERROR(_logger, "{} {} failed code={} body={}", method, url, code, body.toStdString());
101+
SPDLOG_LOGGER_ERROR(_logger, "DELETE {} failed code={} body={}", url, code, body.toStdString());
100102
_logger->flush();
101103
return;
102104
}

0 commit comments

Comments
 (0)