From: APTX Date: Sun, 30 May 2010 15:41:34 +0000 (+0200) Subject: - Made errorState reachable. Most errors are now being reported. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=7d124ceda89e8b74085400f75c711b876c93aad9;p=aniplayer-old.git - Made errorState reachable. Most errors are now being reported. --- diff --git a/lib/anidbudpclient/anidbudpclient_global.h b/lib/anidbudpclient/anidbudpclient_global.h index 3e15e6b..ff6787c 100644 --- a/lib/anidbudpclient/anidbudpclient_global.h +++ b/lib/anidbudpclient/anidbudpclient_global.h @@ -6,7 +6,7 @@ #include #define CLIENT_NAME "anidbudpclient" -#define CLIENT_VERSION 0x000002 +#define CLIENT_VERSION 0x000003 #define PROTOCOL_VERSION 3 #if defined(ANIDBUDPCLIENT_LIBRARY) @@ -25,6 +25,8 @@ namespace AniDBUdpClient HostUnreachableError, AuthenticationError, BannedError, + ClientBannedError, + ClientVersionOutdatedError, ServerError, UnknownError, }; diff --git a/lib/anidbudpclient/client.cpp b/lib/anidbudpclient/client.cpp index e6705ad..e55c025 100644 --- a/lib/anidbudpclient/client.cpp +++ b/lib/anidbudpclient/client.cpp @@ -71,7 +71,6 @@ qDebug() << "Api instance init!"; stateMachine->addState(recieveState); stateMachine->addState(recieveFailState); stateMachine->setInitialState(disconnectedState); - stateMachine->setErrorState(errorState); connectedState->setInitialState(sendState); connectedHistoryState->setDefaultState(sendState); @@ -100,9 +99,11 @@ qDebug() << "Api instance init!"; idleTimeoutState->addTransition(this, SIGNAL(startSending()), sendState); recieveState->addTransition(this, SIGNAL(authenticated()), authenticatingState); - recieveFailState->addTransition(this, SIGNAL(connectionError()), errorState); + recieveState->addTransition(this, SIGNAL(connectionError()), errorState); + recieveState->addTransition(this, SIGNAL(replyRecieved()), connectedHistoryState); + - recieveState->addTransition(connectedHistoryState); + recieveFailState->addTransition(this, SIGNAL(connectionError()), errorState); recieveFailState->addTransition(sendState); // ------------ END Transitions ------------------- @@ -259,6 +260,7 @@ QString Client::errorString() const void Client::enterErrorState() { qDebug() << "Entering Error State"; + disconnect(); } void Client::enterDisconnectedState() @@ -466,10 +468,10 @@ qDebug() << "COMPRESSED DATAGRAM = " << tmp; .arg(senderPort) .arg(reply); -/* + // Check if it is a 6xx error. { - QRegExp rx("6[0-9]{2} "); + QRegExp rx("(?:50[34]|555|6[0-9]{2}) "); if (rx.exactMatch(tmp.mid(0, 4))) { @@ -499,12 +501,13 @@ qDebug() << "COMPRESSED DATAGRAM = " << tmp; qDebug() << QString("SERVER ERROR %1").arg(replyCode); } emit connectionError(); + goto endLoop; break; } + continue; } - continue; } -*/ + QByteArray commandId = tmp.mid(0, 5); commandsTimedOut = 0; @@ -512,12 +515,12 @@ qDebug() << "COMPRESSED DATAGRAM = " << tmp; // Do not parse reply for unknown commands. if (!sentCommands.contains(commandId)) { - qDebug() << QString("Unknown command with id: %1, discarding") - .arg(commandId.constData()); +qDebug() << QString("Unknown command with id: %1, discarding") + .arg(commandId.constData()); continue; } - qDebug() << QString("Sending reply to command with id: %1") - .arg(commandId.constData()); +qDebug() << QString("Sending reply to command with id: %1") + .arg(commandId.constData()); // tag + space = 5 + 1 QByteArray replyCodeText = tmp.mid(6, 3); @@ -552,9 +555,21 @@ qDebug() << "LOGIN FIRST required, authing"; case LOGGED_OUT: m_sessionId.clear(); break; + case CLIENT_VERSION_OUTDATED: + m_error = ClientVersionOutdatedError; + m_errorString = tr("Client version outdated"); + emit connectionError(); + goto endLoop; + break; + case CLIENT_BANNED: + m_error = ClientBannedError; + m_errorString = tr("UDP Client banned"); + emit connectionError(); + goto endLoop; + break; case BANNED: m_error = BannedError; - m_errorString = reply.mid(10); + m_errorString = tr("User banned from UDP API: %1").arg(reply.mid(10)); emit connectionError(); goto endLoop; break; @@ -575,6 +590,7 @@ qDebug() << "LOGIN FIRST required, authing"; m_errorString = tr("Server busy. Try again later. Wait at least 30 minutes."); emit connectionError(); goto endLoop; + break; default: if (replyCode > 601 && replyCode < 700) { @@ -594,6 +610,9 @@ qDebug() << "LOGIN FIRST required, authing"; continueLoop: ; } + // replyRecieved() should be emitted on success + // all connection errors go directly to endLoops + emit replyRecieved(); endLoop: ; }