From 5d2b1940d0fac8c80f3b6665b493ac3a90e345a2 Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Sat, 9 May 2026 11:37:44 +0200 Subject: [PATCH 1/3] Don't crash if there are no IP address --- YACReaderLibraryServer/main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index fc988ec7e..9c47dd45d 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -469,6 +469,11 @@ void logSystemAndConfig() void printServerInfo(YACReaderHttpServer *httpServer) { auto addresses = getIpAddresses(); + if (addresses.isEmpty()) { + QLOG_WARN() << "Running, but no global network interfaces were detected"; + return; + } + QLOG_INFO() << "Running on" << addresses.first() + ":" + httpServer->getPort().toLocal8Bit() << "\n"; qrcodegen::QrCode code = qrcodegen::QrCode::encodeText( From 4d68c1e2cb848314c825c10bdf0f32095f8d9866 Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Sat, 9 May 2026 11:38:13 +0200 Subject: [PATCH 2/3] Fail at launch if the server can't start --- YACReaderLibrary/server/yacreader_http_server.cpp | 9 +++++++++ YACReaderLibrary/server/yacreader_http_server.h | 1 + YACReaderLibraryServer/main.cpp | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/YACReaderLibrary/server/yacreader_http_server.cpp b/YACReaderLibrary/server/yacreader_http_server.cpp index 39f9e3980..5ddf2d6d8 100644 --- a/YACReaderLibrary/server/yacreader_http_server.cpp +++ b/YACReaderLibrary/server/yacreader_http_server.cpp @@ -150,3 +150,12 @@ QString YACReaderHttpServer::getPort() return QString("%1").arg(listener->serverPort()); } + +QString YACReaderHttpServer::errorString() const +{ + if (listener == nullptr) { + return QString(); + } + + return listener->errorString(); +} diff --git a/YACReaderLibrary/server/yacreader_http_server.h b/YACReaderLibrary/server/yacreader_http_server.h index 0acc8a19d..0afa3ae4d 100644 --- a/YACReaderLibrary/server/yacreader_http_server.h +++ b/YACReaderLibrary/server/yacreader_http_server.h @@ -20,6 +20,7 @@ class YACReaderHttpServer : public QObject bool isRunning(); QString getPort(); + QString errorString() const; signals: void clientSync(); diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index 9c47dd45d..6e94f9827 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -219,6 +219,15 @@ int start(QCoreApplication &app, QCommandLineParser &parser, const QStringList & httpServer->start(); } + if (!httpServer->isRunning()) { + QLOG_ERROR() << "Unable to start HTTP server:" << httpServer->errorString(); + delete httpServer; +#ifdef Q_OS_WIN + logger.shutDownLoggerThread(); +#endif + return 1; + } + printServerInfo(httpServer); // Update libraries to new versions From f87f345a6acce61ac0a24596a709aa2cb81a210c Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Sat, 9 May 2026 11:39:10 +0200 Subject: [PATCH 3/3] Use non zero return values on errors --- YACReaderLibraryServer/main.cpp | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index 6e94f9827..928345559 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -127,8 +127,8 @@ int main(int argc, char **argv) } else // error { parser.process(app); - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } } @@ -158,7 +158,7 @@ int start(QCoreApplication &app, QCommandLineParser &parser, const QStringList & } else if (parser.value("loglevel") == "error") { logger.setLoggingLevel(QsLogging::ErrorLevel); } else { - parser.showHelp(); + parser.showHelp(1); } } @@ -209,8 +209,8 @@ int start(QCoreApplication &app, QCommandLineParser &parser, const QStringList & qint32 port = parser.value("port").toInt(&valid); if (!valid || port < 1 || port > 65535) { qout << "Error: " << parser.value("port") << " is not a valid port" << Qt::endl; - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } else { httpServer->start(port); } @@ -278,8 +278,8 @@ int createLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 3) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -300,8 +300,8 @@ int updateLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -323,8 +323,8 @@ int addLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings *set const QStringList args = parser.positionalArguments(); if (args.length() != 3) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -345,8 +345,8 @@ int removeLibrary(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings); @@ -383,16 +383,16 @@ int setPort(QCoreApplication &app, QCommandLineParser &parser, QTextStream &qout const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } bool valid; qint32 port = args.at(1).toInt(&valid); if (!valid || port < 1 || port > 65535) { qout << "Invalid server port"; - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } QSettings *settings = new QSettings(YACReader::getSettingsPath() + "/" + QCoreApplication::applicationName() + ".ini", QSettings::IniFormat); @@ -413,8 +413,8 @@ int rescanXmlInfo(QCoreApplication &app, QCommandLineParser &parser, QSettings * const QStringList args = parser.positionalArguments(); if (args.length() != 2) { - parser.showHelp(); - return 0; + parser.showHelp(1); + return 1; } ConsoleUILibraryCreator *libraryCreatorUI = new ConsoleUILibraryCreator(settings);