@@ -16,8 +16,8 @@ using namespace std::string_literals;
1616Skipper::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
2323Skipper::~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
8889void 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